In meiner Qt-Anwendung habe ich eine Basisklasse wie folgt. Ich verwende QObject, weil ich den Signal-Slot-Mechanismus in allen abgeleiteten Klassen verwenden möchte.Was ist die korrekte Art der Mehrfachvererbung in Qt/C++?
class IRzPlugin : public QObject {
public:
virtual void registerMenu(QWidget*);
virtual void execute();
}
Dann habe ich eine andere Klasse wie folgt. Ich muss von QWidget erweitern, da ich Methoden zur Ereignisbehandlung in allen abgeleiteten Klassen implementieren muss (mouseMoveEvent(), keyPressEvent() .. etc);
class IRzLayeringPlugin : public IRzPlugin , public QWidget{
}
Aber Compiler gibt diese die Fehler:
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx: In member function `virtual const QMetaObject* IRzLayeringPlugin::metaObject() const':
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
make[2]: *** [CMakeFiles/Rinzo.dir/plugin/moc_IRzLayeringPlugin.cxx.obj] Error 1
danke, das ist was ich endlich gemacht habe / –