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 に答える