Russian Qt Forum

Qt => Общие вопросы => Тема начата: kdm от Февраль 23, 2011, 13:48



Название: Наследование от двух классов, какая разница в порядке записи
Отправлено: kdm от Февраль 23, 2011, 13:48
Только что попался на пример: наследование от двух классов.
Для нового пользовательского класса делаю наследование с public от двух классов QGraphicsItem и QObject (наследую QObject для сигнал-слотового механизма). Но компилятор мне ругается примерно такими словами:
Код:
debug\moc_graphicspixmapitem.cpp:46: error: 'staticMetaObject' is not a member of 'QGraphicsPixmapItem'
debug\moc_graphicspixmapitem.cpp: In member function 'virtual void* GraphicsPixmapItem::qt_metacast(const char*)':
debug\moc_graphicspixmapitem.cpp:66: error: 'qt_metacast' is not a member of 'QGraphicsPixmapItem'
debug\moc_graphicspixmapitem.cpp: In member function 'virtual int GraphicsPixmapItem::qt_metacall(QMetaObject::Call, int, void**)':
debug\moc_graphicspixmapitem.cpp:71: error: 'qt_metacall' is not a member of 'QGraphicsPixmapItem'
Почитав топик вот тут http://www.prog.org.ru/topic_4418_0.html, вдруг обратил внимание что последовательность классов при наследовании идет в другом порядке, т.е. не "public QGraphicsItem, public QObject", а "public QObject, public QGraphicsItem".
Университетский курс C++ был давно. С тех пор из-за того, что не сталкиваюсь часто с разными вещями, забываю многие вещи (если конечно я их помнил :D).

Просветите пожалуйста, в чем тут фишка? (книжки под рукой нету :()


Название: Re: Наследование от двух классов, какая разница в порядке записи
Отправлено: BRE от Февраль 23, 2011, 14:10
Это скорее всего фишка не C++, а moc.


Название: Re: Наследование от двух классов, какая разница в порядке записи
Отправлено: Alex Custov от Февраль 23, 2011, 14:37
для С++ без разницы, скорее всего это нужно для moc, чтобы он определил, что класс - QObject.

http://doc.qt.nokia.com/latest/moc.html#multiple-inheritance-requires-qobject-to-be-first