C ++中的全局类

问题描述 投票:0回答:2

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

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

认为,

  1. 我有一个名为foo的int变量,定义为public,并且在[[globalClass.h处的值为[[100]]]]
  2. class globalClass { public: int foo = 100; }
我还有一个名为class2nd,class3rd,class4th的类
    我定义了class2nd,class3rd和class4th的实例,例如(在main.cpp中)
  1. #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
    1. (例如
    2. class2nd

    #include "globalClass.h" globalClass glb; void globalClass::someFunction() { glb.foo = 123; }

    现在,我必须在所有其他类中将
      foo
    视为
  • 123
  • ,但正如在[[globalClass.h上定义的那样,我将其视为100。在class2nd上只能视为123为了使foo在所有类及其实例中都是唯一的,我该怎么办...?在我的项目中,我有一个名为globalClass的类,该类为每个类及其创建的实例保留全局变量。此globalClass的目的是发送所有其他类及其创建的类...
    c++
    2个回答
    0
    投票
    您还应该考虑使用Singleton设计模式,因为在构建应用程序时很少采用这种设计。您可以查看this以了解有关其用例的更多信息!

    0
    投票

    Singleton.h

    #ifndef Singleton_H #define Singleton_H class Singleton { private: Singleton(); ~Singleton(); static bool isInit; public: static Singleton* getInstance(); int foo; }; #endif

    Singleton.cpp

    #include "Singleton.h"
    
    bool Singleton::isInit=false;
    
    Singleton* Singleton::getInstance()
    {
        static Singleton s;
        return isInit? &s:0;
    }
    
    Singleton::Singleton()
    {   
        isInit=true;    
    }
    
    Singleton::~Singleton()
    {   
        isInit=false;
    }
    
    

    main.cpp(

    或具有相同语法的otherClass 

    #include "Singleton.h" void main() { Singleton* p = Singleton::getInstance(); p->foo = 123; // Use variable from everywhere with same value.... // Other staffs }

    © www.soinside.com 2019 - 2024. All rights reserved.