如何在多个文件和类之间传递instanced

时间:2012-08-20 21:45:12

标签: c++ algorithm oop instance multiple-instances

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

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

2 个答案:

答案 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,现在每个实例可以为每个实例编写一个类吗?