Ошибка invalid conversion from `QWidget*' to `QComboBox*' |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка invalid conversion from `QWidget*' to `QComboBox*' |
kvak |
16.9.2010, 11:47
Сообщение
#1
|
Студент Группа: Участник Сообщений: 51 Регистрация: 5.5.2010 Пользователь №: 1690 Спасибо сказали: 1 раз(а) Репутация: 0 |
Имеется:
QComboBox *oe_units; *PM - объекта собственного класса *TABLE_ELITE - таблица QTableWidget, которая является данным класса, который представляет объект PM Не рабоатает вот такая нструкция: oe_units = PM->TABLE_ELITE->cellWidget(e, f); Код ошибки: code\order.cpp:104: error: invalid conversion from `QWidget*' to `QComboBox*' Задача получить через функцию cellWidget, выполненную для таблицы, которая принадлежит классу, представленному объектом PM, указатель на тот самый виджет. К этому времени в этой ячейке с адресом (e, f) находится виджет QComboBox. Так как функция cellWidget возвращает указатель полученного виджета, то по идее мой указатель oe_units должен после выполнения инструкции указывать на тот самый виджет. Сам виджет QComboBox не приватный. В чем тут может быть ошибка ? Правильная ли сама инструкция ? |
|
|
Алексей1153 |
16.9.2010, 21:50
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
т.е. ты всегда уверен что приведение закончится успешно? конечно Это лишь снятие ответственности с компилятора, который паникует при попытке присвоить адрес объекта типа родителя указателю на объекта типа дитёнка (наоборот можно, он даже не пикнет). Более ничего при этом не происходит та легко. при освобождении памяти ты даешь delete указатель - как по адресу delete определяет сколько памяти освободить? каков размер обЪекта? это не пример. Во первых, АДРЕС не поменяется от этого. Во вторых, для таких случаев должен быть виртуальный деструктор, либо ты уж учитывай, какой тип удаляется и приведи его перед удалением А DEADHUNT говорил адреса вообще-то тоже требуется корректировать DEADHUNT, в твоём примере адрес не меняется и не корректируется тоже ) я вредное, я знаю... Но пока не увидел убедительных объяснений обязаловки применения каста |
|
|
BRE |
16.9.2010, 22:06
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
я вредное, я знаю... Но пока не увидел убедительных объяснений обязаловки применения каста Давай смотреть.
Сишное преобразование ничего не контролирует, с его помошью я могу преобразовать QString к QWidget, последствия правда будут не хорошие. Насчет корректировки адреса указателя. Попробуй с теми же классами выполнить следующие преобразования:
И посмотри как будет меняться указатель. Кстати сишные преобразования тоже так умеют. |
|
|
Текстовая версия | Сейчас: 28.1.2025, 21:03 |