Russian Qt Forum

Qt => Вопросы новичков => Тема начата: deMax от Июль 27, 2015, 11:24



Название: [РЕШЕНО] qobject_cast для второго наследники QObject
Отправлено: deMax от Июль 27, 2015, 11:24
Собственно, как сделать?

Код:
class A: public QObject
{ Q_OBJECT };
class B: public A {};

A *aa = new B;
qobject_cast<B*>(aa);//... ошибка: invalid application of 'sizeof' to incomplete type 'QStaticAssertFailure<false>'....


Название: Re: qobject_cast для второго наследники QObject
Отправлено: gil9red от Июль 27, 2015, 11:52
Вроде бы опечаток не увидел
А через static_cast и dynamic_cast?


Название: Re: qobject_cast для второго наследники QObject
Отправлено: Пантер от Июль 27, 2015, 11:54
Q_OBJECT в B классе?


Название: Re: qobject_cast для второго наследники QObject
Отправлено: deMax от Июль 27, 2015, 12:06
Q_OBJECT в B классе?
Весь код сейчас лежит в main.cpp
Код:
class A: public QObject {};
class B: public A {Q_OBJECT}; //... ошибка: undefined reference to `vtable for B'
Код:
class A: public QObject {Q_OBJECT};//...ошибка: undefined reference to `vtable for A'
class B: public A {Q_OBJECT};//...ошибка: undefined reference to `vtable for B'
Сам часто пользовался qobject_cast, но они всегда были прямыми наследниками от QWidget/QObject


Название: Re: qobject_cast для второго наследники QObject
Отправлено: Пантер от Июль 27, 2015, 12:09
Надо main.moc внизу файла заинклудить.


Название: Re: qobject_cast для второго наследники QObject
Отправлено: deMax от Июль 27, 2015, 14:30
Надо main.moc внизу файла заинклудить.
что? А можно пример, как это может работать.


Название: Re: qobject_cast для второго наследники QObject
Отправлено: Пантер от Июль 27, 2015, 14:31
https://forum.qt.io/topic/12388/q_object-in-cpp-file/4


Название: Re: qobject_cast для второго наследники QObject
Отправлено: deMax от Август 03, 2015, 11:41
Раскидал классы в отдельные cpp и h. Само заработало, так и не понял что ему нужно и почему он выделывается.


Название: Re: qobject_cast для второго наследники QObject
Отправлено: Igors от Август 03, 2015, 11:50
Раскидал классы в отдельные cpp и h. Само заработало, так и не понял что ему нужно и почему он выделывается.
Потому что "просто так" moc генератор смотрит только .h файлы. А Q_OBJECT в cpp файлах не видит, moc файлы для них не создает, ну и, естественно, ошибки линковки. Обычно с этим сталкиваются через неск дней знакомства с Qt  :)