Многоуровневое наследование в Qt

Я пытаюсь реализовать многоуровневое наследование для своих страниц Qt.

class MyPage1: public QWizardPage {

Q_OBJECT

...

}

and 

class MyPage2: public MyPage1 {
Q_OBJECT

...

}

Moc_MyPage2.cc пуст, и при связывании я получаю сообщение об ошибке:

ошибка LNK2001: неразрешенный внешний символ "public: virtual struct QMetaObject const * __thiscall dsw :: MyPage2 :: metaObject (void) const" (? metaObject @ MyPage2 @ dsw @@ UBEPBUQMetaObject @@ XZ)

Кто-нибудь может помочь мне?


person PDH    schedule 18.04.2014    source источник
comment
Я переименовал файл MyPage2 в MyPage21 и перезапустил визуальную студию, почистил и построил проект, и все заработало!   -  person PDH    schedule 18.04.2014
comment
Ага! даже я столкнулся с проблемами связывания при работе с Qt в Visual Studio   -  person DNamto    schedule 18.04.2014


Ответы (1)


Moc_MyPage2.cc пуст, и при связывании я получаю сообщение об ошибке,

ошибка LNK2001: неразрешенный внешний символ public: виртуальная структура QMetaObject const * __thiscall dsw :: MyPage2 :: metaObject (void) const (? metaObject @ MyPage2 @ dsw @@ UBEPBUQMetaObject @@ XZ)

Ошибка компоновщика ожидается, если файл moc не сгенерирован должным образом, поэтому реальный вопрос заключается в том, почему файл moc не был сгенерирован должным образом.

Чистая сборка должна решить эту проблему. Затем проверьте, создается ли файл moc, если вы снова получили ошибку компоновщика. Кроме того, я предполагаю, что вы используете плагин Qt Add-In для Visual Studio.

person lpapp    schedule 18.04.2014