我有一个类是Singleton类。在CPP文件中,我有:
static std::unique_ptr<CStage> s;
MSOCPPAPITYPE_(ICStage&) GetInstance()
{
try
{
s = std::make_unique<CStage>();
}
catch (...)
{
}
return *s;
}
在另一个文件中,我调用GetInstance().SetMValue(true);
,这是一个将类的成员变量设置为true
的函数。成员变量的默认值为false
。然后我调用GetInstance().GetMValue();
,它返回成员变量的值。我没有返回true
,而是获得false
返回值。这让我相信我没有正确使用单身人士。如何正确使用我的班级作为单身人士?
答案 0 :(得分:2)
我无法在此处看到使用std::unique_ptr
的必要性。您可以按如下方式简化GetInstance()
功能
static MSOCPPAPITYPE_(ICStage&) GetInstance() {
static CStage theInstance;
return theInstance;
}