| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt4]контейнер для указателей |
| Автор: anatox91 1.8.2008, 21:27 | ||||
есть QList<QTreeWidgetItem*>, получаемый с помощью QTreeWidget::selectedItems(). Нужно брать первый элемент контейнера(в нем больше быть и не может) и для работы с ним преобразовать этот элемент в мой тип(TreeItem*, класс унаследованный от QTreeWidgetItem). Вот проблемный участок кода:
но компилятор ругается:
как с этим бороться? или может для указателей нужно использовать какие-то другие контейнеры, специализированные? |
| Автор: SABROG 2.8.2008, 08:33 |
| В Qt не все классы основаны на QObject'е. QTreeWidgetItem также как и QString и другие классы - не наследники QObject'a. Используй стандартные c++совские касты, dynamic_cast<>() или reinterpret_cast<>(). |
| Автор: Torsten 2.8.2008, 10:38 |
| reinterpret_cast<> - предназначен для преобразования разных типов, не имеющих связей. Нужно использовать либо dynamic_cast, либо static_cast. dynamic нужно использовать, в случае если точно не известно какому классу принадлежит элемент, он проивзодит дополинтельные дейстия (для проверки возможности преобразования), поэтому он медленнее чем другие преобразования. Если программист точно знает, что здесь будет нужный ему тип, то лучше static_cast использовать. |
| Автор: anatox91 2.8.2008, 20:20 |
| всем спасибо за помощь, со static_cast'ом заработало |