假设我正在编写一个大约有50个类的软件。 我们可以将课程分为两部分: 1.我们被迫为一次实例创建实例的类。 2.我们只创建一个实例直到程序结束。
所以,假设我有MainProgram类,一切都在这里,然后就是
在main.cpp中创建一个实例并运行我的程序。
现在,我需要将仅创建一次的实例(选项2)传递给其他类,是吗?
有什么想法实现这个?
因为我不能再new
。我只是使用旧实例。例如:
我写了一个SocketNetwork Class
,它的构造函数得到了端口号和bind
。
所以我再也不能rebind
而且我被迫访问给定端口号的资源。
答案 0 :(得分:1)
好像你正在寻找singleton pattern。
它类似于:
class A
{
public:
static A& getInstance()
{
static A a;
return a;
}
private:
A() {}
};
由于构造函数是私有的,因此您只能获得通过A
方法创建的getInstance()
单个实例,您可以在任何地方调用该实例。
`A::getInstance()`
将始终返回A
的相同实例。
答案 1 :(得分:0)
在SingleTone之前,我使用了:
class AudioCallbackData
{
public:
AudioCallbackData();
AudioMixer *audioMixer;
AudioBuilder *AbRcv;
NetworkSocket *socketAudio;
NetworkSocket *socketCommand;
NetworkSocket *socketSetting;
NetworkSocket *socketStatus;
NetworkSocket *socketData;
MainCore *mainCorePtr;
AudioCore *audioCorePtr;
Device *devPtr;
CircularBuffer *cBuffer;
};
extern AudioCallbackData *audioCallbackDataPtr;// = ptr;
每个属性都保留一个类的实例。对于SingleTone,现在每个实例可以为每个实例编写一个类吗?