如何声明可以在整个程序中使用的全局变量

trr*_*rrm 22 c++

我有一个变量,我想在我的所有类中使用,而不需要每次我想使用它时都将它传递给类构造函数.我如何在C++中实现这一目标?

谢谢.

fup*_*uck 27

global.h
extern int myVar;

global.cpp
#include "global.h"
int myVar = 0;  // initialize

class1.cpp
#include "global.h"
...

class2.cpp
#include "global.h"
...

class3.cpp
#include "global.h"
...
Run Code Online (Sandbox Code Playgroud)

MyVar将作为全局变量在每个模块中被知道并可用.您不必拥有global.cpp.您可以在任何类.cpp中初始化myVar,但我认为这对于较大的程序来说更清晰.


Emi*_*ier 5

如果您不打算像 Lyndsey 建议的那样使用单例模式,那么至少使用全局函数(在命名空间内)来访问变量。这将使您能够更灵活地管理该全球实体。

// mymodule.h
namespace mynamespace // prevents polluting the global namespace
{
   extern int getGlobalVariable();
}

// mymodule.cpp
namespace mynamespace
{
   int myGlobalVariable = 42;

   int getGlobalVariable()
   {
      return myGlobalVariable;
   }
}
Run Code Online (Sandbox Code Playgroud)