Russian Qt Forum

Программирование => С/C++ => Тема начата: Igors от Июнь 19, 2017, 09:27



Название: Избавиться от приведений
Отправлено: Igors от Июнь 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;
}
 
Нет ли чего нибудь более "грамотного" (козырного, вумного и.т.п.) ?

Спасибо


Название: Re: Избавиться от приведений
Отправлено: qate от Июнь 19, 2017, 11:39
как вариант - использовать static_cast с предварительной проверкой типа
например alert_cast внизу https://github.com/arvidn/libtorrent/blob/master/include/libtorrent/alert.hpp


Название: Re: Избавиться от приведений
Отправлено: Авварон от Июнь 19, 2017, 18:38
Я бы юзал статик каст, ну да это не суть.
По сабжу - так и надо делать, что не нравится-то?


Название: Re: Избавиться от приведений
Отправлено: Racheengel от Июнь 19, 2017, 20:30
если только один тип итема, то статик каст.
упадет в рантайме - значит, где то проблема еще.
иначе дынамык, да...