Подтвердить что ты не робот

Базовые классы без Qt

Я использую Qt (который я новичок в) 4.8.2, с Visual Studio, и я создал базовый класс с именем "Контакт". Я не хочу, чтобы этот класс был Qt-эксклюзивным, поэтому я хотел сделать еще один класс "QContact", который наследует "Contact" и QObject и обрабатывает все связанные с Qt дела, таких как макрос Q_OBJECT и т.д.

К сожалению, когда я унаследовал, сборка завершилась неудачно, сказав:

moc_QContact.cpp(53): error C2039: 'staticMetaObject' : is not a member of 'Contact'
moc_QContact.cpp(75): error C2039: 'qt_metacast' : is not a member of 'Contact'
moc_QContact.cpp(80): error C2039: 'qt_metacall' : is not a member of 'Contact'

Я провел небольшое исследование в Интернете и выяснил, что вы не можете получить класс Qt из класса, отличного от Qt. поэтому, чтобы исправить это, "Контакт" мог наследовать "QObject" (я пытался, он работал). но это сделает его эксклюзивным для Qt, что является моей проблемой.

Итак, я спрашиваю: как вы можете сделать базовый класс без Qt для класса Qt?

Спасибо.

4b9b3361

Ответ 1

Вы можете получить свой класс из QObject и других классов, которые не вытекают из него, но QObject должен быть первым базовым классом в список базовых классов.

Итак, это неправильно:

class QContact: public Contact, public QObject {};

Вам нужно записать его как

class QContact: public QObject, public Contact {};