**重新思考更有意义
我有3个类,我希望这些类的实例能够相互交互,而不是通过控制器对象。我遇到的问题是他们没有在其他.h文件中定义,我不知道如何正确地做到这一点。以下是一些要解释的代码;
game.cpp:
#include "game.h"
#include "Class - cEntity.h"
#include "Class - cGUI.h"
cGui *gui;
vector<cEntity*> entities;
Class - cEntity.h:
#include "game.h"
#include "Class - cGui.h"
extern cGui *gui;
class cEntity{
...
};
我编译使用此结构的代码,我得到2个错误;
错误7错误C2143:语法错误:缺少';'在'*'c:\ dropbox \ of_v0.8.0_vs_release \ apps \ myapps \ zombierts \ src \ entities.h之前10
错误8错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int c:\ dropbox \ of_v0.8.0_vs_release \ apps \ myapps \ zombierts \ src \ entities.h 10
任何人都可以帮助澄清我哪里出错了吗?
由于
答案 0 :(得分:1)
您可以为矢量创建标题。像这样:
<强> cEntity.h:强>
class cEntity
{
// ...
};
<强> interests.h:强>
#include <vector>
class cEntity;
extern std::vector<cEntity*> interests;
现在进行实施:
<强> cEntity.cpp:强>
#include "cEntity.h"
// implement member functions and define static data members
<强> interests.cpp:强>
#include "interests.h"
std::vector<cEntity*> interests;
在您需要引用向量的所有地方,添加#include "interests.h"
,如果您需要对实际实体进行操作,还需要#include "cEntity.h"
。
答案 1 :(得分:0)
使用单例模式。来自C++ Singleton design pattern的代码。然后你可以拥有矢量兴趣;在你的单身人士课上。
class S
{
public:
static S& getInstance()
{
static S instance; // Guaranteed to be destroyed.
// Instantiated on first use.
return instance;
}
private:
S() {}; // Constructor? (the {} brackets) are needed here.
// Dont forget to declare these two. You want to make sure they
// are unaccessable otherwise you may accidently get copies of
// your singleton appearing.
S(S const&); // Don't Implement
void operator=(S const&); // Don't implement
};
答案 2 :(得分:0)