1

假设我正在编写一个有大约 50 个类的软件。我们可以将类分为 2 部分: 1. 我们强制创建实例的类更多的是一次实例。2. 类我们只创建一个实例,直到程序结束。

所以,假设我有 MainProgram 类,一切都在这里,然后在 main.cpp 中创建一个实例并运行我的程序。现在,我需要将只创建一次的实例(选项 2)传递给其他类,你有什么想法来实现这个吗?因为我不能new再一次了。我只是使用旧实例。例如:我写了一个SocketNetwork Class它的构造函数获取端口号并bind传递给它。所以我不能rebind再一次,我被迫访问给定端口号的资源。

4

2 回答 2

1

好像您正在寻找单例模式

它类似于:

class A
{
public:
   static A& getInstance()
   {
      static A a;
      return a;
   }
private:
   A() {}
};

因为构造函数是私有的,所以你只能获取A通过方法创建的单个实例getInstance(),你可以在任何地方调用它。

`A::getInstance()`

将始终返回相同的A.

于 2012-08-20T21:46:07.353 回答
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,现在我可以为每个实例编写一个类吗?

于 2012-08-20T22:00:53.137 回答