非常快的Globals.h问题(包括它,一些项目仍然未定义)

时间:2011-07-19 12:56:12

标签: c++ sdl globals

使用globals.h我希望存储一个矩形矢量,还有一个碰撞盒和一些全局bool

globals.h

extern SDL_Rect winRect;

extern std::vector<SDL_Rect> platform;

extern bool paused;
extern bool exit;

我可以在globals.cpp中将bool设置为false。

bool paused = false;
bool exit = false;

然而,当我尝试使用全局winRect SDL_Rect或SDL_Rects的全局向量时,编译器会吐出“未定义的对平台的引用”或“到winRect”。我无法理解,因为它们是在globals.h文件中设置的,而globals.h包含在试图使用它们的类头中

我需要在globals.cpp文件中定义关于vector和rect的其他内容吗?

对于我试图操纵全局变量的类,我的标题包含的顺序可能有问题吗?

希望有一个简单的解决方案,我确定我只是遗漏了一些东西。

2 个答案:

答案 0 :(得分:2)

您需要在globals.cpp中定义winRect和platform:

SDL_Rect winRect;

std::vector<SDL_Rect> platform;

bool paused = false;
bool exit = false;

Extern只告诉编译器变量和/或函数是在另一个地方定义的,如果你没有定义它,链接器会给你一个错误,因为它找不到定义。

答案 1 :(得分:0)

a)使用命名空间,可能你有命名冲突。 b)在定义它的向量之前包括标题SDL_Rect类型的标题