Russian Qt Forum
Ноябрь 22, 2024, 11:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Избавиться от приведений  (Прочитано 5377 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июнь 19, 2017, 09:27 »

Добрый день

Наследуюсь от QTreeWidget, при этом QTreeWidgetItem тоже перекрыт. Все хорошо, но вылазит очень много dynamic_cast. Чтобы хоть как-то облегчить сделал так
Код
C++ (Qt)
inline MyItem * MkLB( QTreeWidgetItem * item )
{
if (!item) return 0;
MyItem * lb = dynamic_cast<MyItem *> (item);
Q_ASSERT(lb);
return lb;
}
 
Нет ли чего нибудь более "грамотного" (козырного, вумного и.т.п.) ?

Спасибо
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #1 : Июнь 19, 2017, 11:39 »

как вариант - использовать static_cast с предварительной проверкой типа
например alert_cast внизу https://github.com/arvidn/libtorrent/blob/master/include/libtorrent/alert.hpp
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Июнь 19, 2017, 18:38 »

Я бы юзал статик каст, ну да это не суть.
По сабжу - так и надо делать, что не нравится-то?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Июнь 19, 2017, 20:30 »

если только один тип итема, то статик каст.
упадет в рантайме - значит, где то проблема еще.
иначе дынамык, да...
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.132 секунд. Запросов: 23.