访问类的全局实例

时间:2012-08-22 20:54:58

标签: c++ visual-studio-2008

我正在努力搞清楚C ++。我一直在尝试做的是创建某些类的全局实例(控制输入存储在全局变量中的类,控制存储在全局变量中的图形的类,控制存储在变量中的整个游戏系统的类等)。到目前为止它一直很好用。但现在我需要从系统控制器给出一个输入控制器数据的实例。

在我的game.h文件(运行主循环和其他一些东西的文件)中,我已经将系统定义为

“全球游戏系统”

在game.cpp中我可以访问名为“keyCodes”的变量

在我的input.cpp文件中,我已经包含了game.h和global.h(它只适用于game.h,所以以为我也尝试使用global.h),我可以看到gameSystem的实例,但我无法访问它的keyCodes变量。

知道怎么解决这个问题吗?当我在AS3和Ruby中编程时,这种事情对我有用。我喜欢模块化的东西。所以我真的很想在这个x.x中以同样的方式做到这一点

1 个答案:

答案 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