2

これは C++ です。私はメインクラスを持っています:

#include <QObject>

#include "Logger.h"
#include "PluginManager.h"

class Main : QObject
{
  Main();
  ~Main();
  Logger &getLogger();

signals:
  // Some signals

public slots:
  // Some slots
};

これで、PluginManager クラスができました。

コンストラクターは次のとおりです。

PluginManager( QObject *parent = 0 );

そして、私は次のようにメインクラスでそれを構築します:

pluginManager = new PluginManager(this);

さて、問題: サーバー クラスは (明らかに) PluginManager を作成する必要があり、PluginManager はサーバー クラスすべてのプラグインからロガーを取得する必要があります。

parent()->getLogger(); // This doesn't work (PluginManager)

エラー:「class QObject」には「getLogger」という名前のメンバーがありません

クラスを作成し、すべてのクラスから派生させる必要がありますか? 参考になる例を挙げてください。

前もって感謝します。

4

3 に答える 3

0

エラー「'class QObject' has no member named 'getLogger'」に関する限り、循環依存とは関係ありません。

PluginManager( QObject *parent = 0 )

親の型は QObject * で、Main クラスのメンバーである getLogger() のメンバーはありません。

于 2013-07-15T09:43:21.310 に答える