0

请看下面的代码

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();

为什么是这样?请帮忙!

4

1 回答 1

3

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

static UIHandler *uiHandler;

之所以static存在,是因为您正在从一种static方法访问它。

请注意,更好的方法是

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

并摆脱该成员。

不要忘记禁止复制。

于 2013-01-25T15:05:05.723 回答