1

我正在从http://lazyfoo.net修改游戏状态。让它作为单个 .cpp 工作;我已将所有代码分成多个文件,现在遇到了问题。我试图在 globals.h 文件中初始化然后在globals.cpp文件中声明。其他.cpp文件需要访问currentState指针,而不会出现多个包含问题。

//globals.h
  cGameState *currentState;

//globals.cpp
  //Game state object
  cGameState *currentState = NULL;

我尝试在头文件中的初始化之前添加 Extern,它会抛出一个不喜欢该类型的错误。有没有全局指针之类的东西?抱歉,如果我使用了错误的词汇,我远非专家,但我感觉如此接近;我仍然缺少一些东西。

4

1 回答 1

3

extern正是您在头文件中想要的,但它必须是小写 E。您的术语不太正确 - 您的头文件需要一个声明,而正是一个(感谢“一个定义规则”).cpp 文件想要一个定义

例如在头文件中:

//globals.h
extern cGameState *currentState; // declare currentState

并在 .cpp 文件中:

// this makes the compiler check the types match
#include "globals.h" 
//globals.cpp
//Game state object
cGameState *currentState = NULL;

就个人而言,尽管我希望避免在您的应用程序中出现大量全局状态。

于 2013-02-07T20:25:07.937 回答