通常,这种问题(您需要一个,但只有一个 - 而且您确信您永远不需要更多)通过使用“单例”模式来解决。
class Singleton
{
public:
static Singleton* getInstance()
{
if (!instance) instance = new Singleton();
return instance;
}
int getStuff() { return stuff; }
private:
Singleton() { stuff = 42; }
static Singleton *instance;
int stuff;
};
然后在一些合适的 .cpp 文件中>
static Singleton *instance;
或者直接使用全局变量:
class Something
{
public:
Something() { stuff = 42; }
int getStuff() { return stuff; }
private:
int stuff;
}
extern Something global_something; // Make sure everyone can find it.
在一个 .cpp 文件中:
Something global_something;
由于这两者本质上都是一个全局变量解决方案,我希望不喜欢全局变量的人会否决它,但如果你不想到处传递你的类对象,全局变量并不是一个糟糕的主意。您只需要知道全局变量作为一般解决方案不一定是一个好主意。很难了解正在发生的事情,如果您突然需要多个存储(因为您决定更改代码以支持两种不同的存储或其他),它肯定会变得混乱 - 但这也适用于单例。