使用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的其他内容吗?
对于我试图操纵全局变量的类,我的标题包含的顺序可能有问题吗?
希望有一个简单的解决方案,我确定我只是遗漏了一些东西。
答案 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
类型的标题