我正在努力搞清楚C ++。我一直在尝试做的是创建某些类的全局实例(控制输入存储在全局变量中的类,控制存储在全局变量中的图形的类,控制存储在变量中的整个游戏系统的类等)。到目前为止它一直很好用。但现在我需要从系统控制器给出一个输入控制器数据的实例。
在我的game.h文件(运行主循环和其他一些东西的文件)中,我已经将系统定义为
“全球游戏系统”
在game.cpp中我可以访问名为“keyCodes”的变量在我的input.cpp文件中,我已经包含了game.h和global.h(它只适用于game.h,所以以为我也尝试使用global.h),我可以看到gameSystem的实例,但我无法访问它的keyCodes变量。
知道怎么解决这个问题吗?当我在AS3和Ruby中编程时,这种事情对我有用。我喜欢模块化的东西。所以我真的很想在这个x.x中以同样的方式做到这一点
答案 0 :(得分:0)
很难准确猜出你在做什么。从我的角度来看,我理解你在一个文件中有一个全局变量,并希望在另一个文件中访问它。如果是这种情况,您必须执行以下操作(我将使用int
进行示例,但任何其他类型都是相同的。
创建一个File1.h
标头文件,告诉全世界名为int
的全局MyGlobalInt
变量存在以下行:
// This is File1.h
extern int MyGlobalInt;
这只是宣布该变量存在。 不声明变量。要在File1.cpp
:
// This is File1.cpp
#include "File1.h"
int MyGlobalInt;
File1.cpp声明变量。现在,它可以在包含File1.h
的任何文件中使用。例如在File2.cpp
:
// This is File2.cpp
#include "File1.h"
void ChangeGlobalInt(int newValue)
{
MyGlobalInt = newValue;
}
在你的情况下,你应该把
extern Whatever_type_you_are_using keyCodes;
文件game.h
中的。文件game.cpp
应#include "game.h"
并有效声明keyCodes
:
#include "game.h"
Whatever_type_you_are_using keyCodes;
现在,包含“game.h”的每个文件都可以使用keyCodes
。