crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

void*
  опции профиля:
сообщение 1.8.2008, 21:06
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


есть QList<QTreeWidgetItem*>, получаемый с помощью QTreeWidget::selectedItems(). Нужно брать первый элемент контейнера(в нем больше быть и не может) и для работы с ним преобразовать этот элемент в мой тип(TreeItem*, класс унаследованный от QTreeWidgetItem). Вот проблемный участок кода:
QTreeWidgetItem *i = tree->selectedItems().first(); //tree - QTreeWidget
TreeItem *item = qobject_cast<TreeItem*>(i);

но компилятор ругается:
ошибка: нет соответствующей функции для вызова ‘qobject_cast(QTreeWidgetItem*&)’

как с этим бороться? или может для указателей нужно использовать какие-то другие контейнеры, специализированные?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Tonal
  опции профиля:
сообщение 2.8.2008, 11:58
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Ну, если выкинуть qobject_cast поломается бинарная совместимость и много кода. Так что это не раньше 5ки может произойти.
Кроме того, есть люди, компилящие проекты с выключенным rtti. в этом случае dynamic_cast работать не будет, а qobject_cast будет.
Хотя серьёзных оправданий для отключения rtti на современных компиляторах я не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.6.2025, 10:07