在init方法中設置一個表示init成功的bool。如果getInstance方法爲false,則拋出異常。
您可以將其作爲靜態私人成員存儲在課堂中。
#include <iostream>
class Single
{
public:
static void init(int x)
{
single.number = x;
inited = true;
}
static Single & GetInstance()
{
//Do exception stuff here....
if(inited)
{
std::cout << "Inited" << std::endl;
}
else
{
std::cout << "NOT Inited" << std::endl;
}
return single;
}
void printTest()
{
std::cout << single.number << std::endl;
}
private:
Single() : number(5)
{
std::cout << "Construction " << std::endl;
}
int number;
static bool inited;
static Single single;
};
bool Single::inited = false;
Single Single::single;
int main()
{
std::cout << "Entering main" << std::endl;
Single::GetInstance();
Single::init(1);
Single::GetInstance().printTest();
}
程序輸出:
Construction
Entering main
NOT Inited
Inited
1
不要使用單和問題就解決了。 – 2013-02-09 22:33:52
你的問題是什麼? – 2013-02-09 22:33:58
嗯。你正在着手解決的根本問題是什麼?單身模式可能不是你的答案。 – Johnsyweb 2013-02-09 22:40:19