在我的项目中,我有一个名为globalClass的类,该类为每个类及其创建的实例保留全局变量。

此globalClass的目的是将所有其他类及其创建的实例的每个变量发送相同的值。如果一个类的实例更改了该值,则其他类(包括main.cpp)必须看到新值。

认为,

  • 我有一个名为 foo 的int变量,定义为 public ,在 globalClass.h上的值为 100
  • 
    class globalClass
    {
    
    public:
       int foo = 100;
    }
    
    
  • 我还有另一个名为class2nd,class3rd,class4th的类
  • 我定义了class2nd,class3rd和class4th的实例,例如(在main.cpp中)
  • #include "class2nd.h"
    #include "class3rd.h"
    #include "class4th.h"
    
    class2nd class2ndA;
    class2nd class2ndB;
    class2nd class2ndC;
    
    class3rd class3rdA;
    class3rd class3rdB;
    class3rd class3rdC;
    
    class4th class4thA;
    class4th class4thB;
    class4th class4thC;
    
  • 我可以从
  • 等其他任何类中访问globalClass的foo

    (例如 class2nd )
    #include "globalClass.h"
    
    globalClass glb;
    
    void globalClass::someFunction()
    {
       glb.foo = 123;
    }
    
    
  • 现在,我必须在所有其他类中将 foo 视为 123 ,但我将其视为 100 ,定义为 globalClass.h 。在 class2nd 上,它只能被视为 123

  • 为了使foo在所有类及其实例中都是唯一的,我该怎么办?

    最佳答案

    一种解决方案是对您的全局类使用Singleton。例如,您可以看到此answer

    这里的问题是您要在类中定义每个编译单元(即,您编译的每个.cpp文件),这意味着在每个cpp文件中实际上都有一个不同的类实例。

    您还应该考虑使用Singleton设计模式,因为在构建应用程序时很少采用这种设计。您可以看到this来了解更多有关其用例的信息!

    关于c++ - C++中的全局类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61435034/

    10-11 15:38