7

コードの例:

class TestOne : public QWidget // To fix this i need to modify  class QWidget : public virtual QObject{}; which belongs to qt
{
  // ...
};

class TestTwo : public virtual QObject
{
  // ...
};

class Test : public TestOne, public TestTwo
{
 // ...
};

この問題を回避する他の方法は何ですか?

4

1 に答える 1

11

QObject は多重継承用に設計されていません。QObject別の QObjects からの多重継承をサポートしていません。2 つのクラスから継承する場合、最初のクラスのみが QObject であり、2 番目はhttp://qt-project.org/doc/qt-4.8/moc.htmlに従ってではありません

QObject による仮想継承はサポートされていません。

2 つの QObject を関連付けて、それらの間でシグナルを転送できます。

シグナル/スロットを必要とせず、QObject から継承しない方法で共通機能を抽象化できます。そしてそれを継承します。MIのQObjectフリークラスをあなたのクラスと混ぜてください。派生QObjectからのシグナル/スロットを介して、これらの継承されたメソッドへの呼び出しを転送できます

于 2012-08-26T16:41:52.490 に答える