请查看以下代码
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();
”
这是为什么?请帮忙!
答案 0 :(得分:3)
UIHandler *uiHandler();
将uiHandler
声明为方法,而不是数据成员。将其更改为
static UIHandler *uiHandler;
static
就在那里,因为您正在使用static
方法访问它。
请注意,更好的方法是
UIHandler& UIHandler::getInstance()
{
static UIHandler uiHandler;
return uiHandler;
}
然后摆脱会员。
不要忘记禁止复制。