如何定义全局变量,以便所有类都可以访问/编辑它们?

时间:2013-11-18 15:49:58

标签: c++ header global

我正在编写一个程序,它有很多需要多个类访问和修改的全局变量。目前我在需要时将它们传递给对象但是现在变得非常复杂(我假设内存密集,因为我传递纹理),因此我试图定义它们一次所以一切都可以访问它们。我不确定如何以这种方式定义它们。

我创建了一个定义变量的头文件,并将其包含在所有其他类头文件中(见下文)。但是,由于某些全局变量是包含global.h的类的对象,我相信我正在创建一个无限循环。

我为自己缺乏知识而道歉,我试图通过前瞻宣言和单身人士来做事,但没有运气。

//This file (global.h) is included by every other class header file 
#ifndef GLOBAL_H
#define GLOBAL_H

#include "component.h" //component.h also calls global.h

//Viewport Controllers.
extern float viewportX = 0;
extern float viewportY = 0;
extern float viewportZ = 0;
extern float displaySize = 50;
extern float scale = 1;

extern component = component();

#endif

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以在一个.cpp文件中定义所有全局变量,无论何时必须在其他文件中使用它们,都可以通过使用extern关键字进行限定来在该文件中声明它们。

答案 1 :(得分:0)

我建议创建一个名为statics的类。在那里你可以声明常量,只读变量和方法,它们大多数独立于调用它们的对象。然后你就有了一个封闭,对可变性的限制访问以及对全球全球变量的广泛使用。 如果您希望多个变量也被各种类更改,那么您应该创建访问器和/或变更器。请记住要小心,哪个类更改此静态类中的静态范围变量。 另一个选择是使用共享内存,但我认为,这超出了您的要求的范围。