C ++ circular incluye

No puedo resolver este problema de dependencia circular; siempre obtengo este error: "uso no válido de tipo de estructura incompleta GemsGame" No sé por qué el compilador no conoce la declaración de GemsGame incluso si incluí gemsgame.h Ambas clases dependen unas de otras (GemsGame almacena un vector de GemElements , y GemElements necesitan acceder a este mismo vector)

Aquí está el código parcial de 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

... y de 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

Respuestas a la pregunta(4)

Su respuesta a la pregunta