6

この循環依存の問題を解決できません。常にこのエラーが発生します:「不完全な型構造体 GemsGame の無効な使用」 gemsgame.h を含めたにもかかわらず、コンパイラが GemsGame の宣言を認識しない理由がわかりません 両方のクラスは互いに依存しています (GemsGame は GemElements のベクトルを格納します) 、および GemElements はこの同じベクトルにアクセスする必要があります)

GEMELEMENT.H の部分的なコードは次のとおりです。

#ifndef GEMELEMENT_H_INCLUDED
#define GEMELEMENT_H_INCLUDED

#include "GemsGame.h"

class GemsGame;

class GemElement {
    private:
        GemsGame* _gemsGame;

    public:
        GemElement{
            _gemsGame = application.getCurrentGame();
            _gemsGame->getGemsVector();
        }
};


#endif // GEMELEMENT_H_INCLUDED

...そして GEMSGAME.H:

#ifndef GEMSGAME_H_INCLUDED
#define GEMSGAME_H_INCLUDED

#include "GemElement.h"

class GemsGame {
    private:
        vector< vector<GemElement*> > _gemsVector;

    public:
        GemsGame() {
            ...
        }

        vector< vector<GemElement*> > getGemsVector() {
            return _gemsVector;
        }
}

#endif // GEMSGAME_H_INCLUDED
4

4 に答える 4