无法实现单一实例模式

Unable to implement Singleton Pattern

本文关键字:实例 模式 单一 实现      更新时间:2023-10-16

请看下面的代码

汉德勒.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();的地方

这是为什么呢?请帮忙!

UIHandler *uiHandler();

uiHandler声明为方法,而不是数据成员。将其更改为

static UIHandler *uiHandler;

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

请注意,更好的方法是

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

然后摆脱会员。

不要忘记禁止复制。