1

使用 globals.h 我希望存储矩形向量以及碰撞框和一些全局布尔值

全局变量.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 文件中定义有关向量和矩形的任何其他内容?

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

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

4

2 回答 2

2

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

SDL_Rect winRect;

std::vector<SDL_Rect> platform;

bool paused = false;
bool exit = false;

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

于 2011-07-19T13:08:21.547 回答
0

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

于 2011-07-19T13:04:03.503 回答