c++ - 无法实现单例模式

标签 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++ 的新手,我正在尝试在这里实现单例模式。但是,这个给出了错误!它在 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/

相关文章:

c++ - 在对象的定义中创建一个对象

c++ - 访问冲突读取位置 0xcdcdcdd5

c# - Visual Studio TDD 设置

c++ - 实现二叉堆

c++ - 在 RELEASE 中构建时找不到 Msvcr90d.dll

C++ Int 位操作是 2UL = 10UL?

.net - 这不是断点的有效位置

c++ - 派生类构造函数可以继承c++中的基类构造函数吗?

mysql - 备份问题

visual-studio - 无法在 Visual Studio 2010 中从发布切换到调试配置