请看下面的代码
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++ 的新手,我正在尝试在这里实现单例模式。但是,这个给出了错误!它在 uiHandler = new UIHandler();
expression must be a modifiable lvalue
”
这是为什么?请帮忙!
最佳答案
UIHandler *uiHandler();
将 uiHandler
声明为方法,而不是数据成员。改成
static UIHandler *uiHandler;
static
在那里是因为您正在从 static
方法访问它。
请注意,更好的方法是
UIHandler& UIHandler::getInstance()
{
static UIHandler uiHandler;
return uiHandler;
}
然后删除该成员。
不要忘记禁止复制。
关于c++ - 无法实现单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524492/