【发布时间】:2013-07-25 18:36:06
【问题描述】:
我无法解决这个循环依赖问题;总是得到这个错误: “不完整类型结构 GemsGame 的无效使用” 我不知道为什么编译器不知道 GemsGame 的声明,即使我包含 gemsgame.h 两个类相互依赖(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
【问题讨论】:
-
如果你有一个前向声明,你不应该也包括它。从您所展示的内容来看,两者都只需要前向声明。
标签: c++ header compiler-errors circular-dependency