无法实现Singleton Pattern

时间:2013-01-25 15:04:15

标签: c++ visual-studio-2010

请查看以下代码

UIHandler.cpp

#include "UIHandler.h"
#include <iostream>

using namespace std;



UIHandler::UIHandler()
{

}


UIHandler::~UIHandler(void)
{
}

UIHandler *UIHandler::getInstance()
{
    if(uiHandler==NULL)
    {
        uiHandler = new UIHandler();
    }

    return uiHandler;
}

UIHandler.h

#pragma once
class UIHandler
{
public:

    ~UIHandler(void);


    static UIHandler *getInstance();

private:

    UIHandler *uiHandler();
    UIHandler();
};

我是C ++的新手,我正在尝试在这里实现单例模式。但是,这个错误!它在expression must be a modifiable lvalue

位置显示“uiHandler = new UIHandler();

这是为什么?请帮忙!

1 个答案:

答案 0 :(得分:3)

UIHandler *uiHandler();uiHandler声明为方法,而不是数据成员。将其更改为

static UIHandler *uiHandler;

static就在那里,因为您正在使用static方法访问它。

请注意,更好的方法是

UIHandler& UIHandler::getInstance()
{
    static UIHandler uiHandler;
    return uiHandler;
}

然后摆脱会员。

不要忘记禁止复制。