我有一个像这样的单身人士课程:
myClass.h
class myClass
{
private:
static myClass *singleton;
myClass ( myClass const& );
myClass& operator = ( myClass const& );
myClass ( );
public:
static myClass* Instance ( );
~myClass ( );
};
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()是一个静态函数,我无法从中访问成员变量,我也不能将这些变量作为静态变量。
那我该如何实现呢?
答案 0 :(得分: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;
}