2

我有一个像这样的单例类:

我的类.h

class myClass
{


private:

    static myClass *singleton;
    myClass ( myClass const& );
    myClass& operator = ( myClass const& );
    myClass (  );


public:

    static myClass* Instance (  );
    ~myClass (  );
};

我的类.cpp

myClass::myClass (  ) {  };

myClass* myClass::singleton = NULL;

myClass* myClass::Instance (  )
{

    if ( !singleton )
    {

        singleton = new myClass;

        // Initialization

    }

    return singleton;

};


myClass::~myClass ( ) 
{

   // Cleanup           

};

现在我需要在返回对象实例之前进行一些初始化,并在析构函数中进行一些清理。由于 myClass* myClass::Instance ( ) 是一个静态函数,因此我无法从中访问成员变量,也无法将这些变量设为静态。

那么我该如何实现呢?

4

1 回答 1

3

您可以重载您myClass::Instance的参数或无参数并重载您的private构造函数:

private:

   myClass();
   myClass(string);

....

public:

//Pass a value to your singleton object

myClass* myClass::Instance(string str)
{

    if ( !singleton )
    {

        singleton = new myClass(str); //overload private constructor and pass values

        // Initialization

    }

    return singleton;
}

//pass no value to singleton object

myClass* myClass::Instance()
{

    if ( !singleton )
    {

        singleton = new myClass(); //overload private constructor
        // Initialization

    }

    return singleton;
}
于 2013-06-24T09:21:06.343 回答