在我的项目中,我有一个名为globalClass的类,该类为每个类及其创建的实例保留全局变量。
此globalClass的目的是将所有其他类及其创建的实例的每个变量发送相同的值。如果一个类的实例更改了该值,则其他类(包括main.cpp)必须看到新值。
认为,
class globalClass
{
public:
int foo = 100;
}
我还有一个名为class2nd,class3rd,class4th的类
#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
#include "globalClass.h"
globalClass glb;
void globalClass::someFunction()
{
glb.foo = 123;
}
现在,我必须在所有其他类中将视为foo
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 }