在C ++中使用单例

时间:2014-08-02 07:13:16

标签: c++ singleton

我有一个类是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返回值。这让我相信我没有正确使用单身人士。如何正确使用我的班级作为单身人士?

1 个答案:

答案 0 :(得分:2)

我无法在此处看到使用std::unique_ptr的必要性。您可以按如下方式简化GetInstance()功能

static MSOCPPAPITYPE_(ICStage&) GetInstance() {
    static CStage theInstance;
    return theInstance;
}