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

C++ 如何定义全局变量以便所有类都可以访问/编辑它们?,c++,header,global,C++,Header,Global,我正在编写一个程序,其中有许多全局变量需要多个类访问和修改。目前,我在需要时将它们传递到对象中,但是现在这变得非常复杂(我假设在传递纹理时会占用大量内存),因此我尝试定义它们一次,以便所有东西都可以访问它们。我不确定如何以这种方式定义它们 我创建了一个定义变量的头文件,并将其包含在所有其他类头文件中(见下文)。然而,由于一些全局变量是包含global.h的类的对象,我相信我正在创建一个无限循环 我对自己缺乏知识表示歉意,我曾试图通过前瞻性声明和单身汉来完成工作,但没有成功 //This file

我正在编写一个程序,其中有许多全局变量需要多个类访问和修改。目前,我在需要时将它们传递到对象中,但是现在这变得非常复杂(我假设在传递纹理时会占用大量内存),因此我尝试定义它们一次,以便所有东西都可以访问它们。我不确定如何以这种方式定义它们

我创建了一个定义变量的头文件,并将其包含在所有其他类头文件中(见下文)。然而,由于一些全局变量是包含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

提前谢谢

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

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

我能想到的一件事是创建一个单独的类,并将所有常量定义为静态常量变量。您可以将此文件包含在您要访问它的所有其他文件中。您应该重新考虑可能的副本。拥有大量可变的全局变量可能会有很大的问题。尝试将单个变量分组到类中,这样就不必传递那么多的单个变量。例如,您可以有一个
ViewportControllers
类。