5

デザイン パターンブックのコードを実装しようとしています。次のエラーが表示されます。

expected initializer before ‘*’ token

この行の場合:

static Singleton *Singleton::itsInstance = 0;

これが完全なコードです。これを試してコンパイルするために g++ 4.2.1 を使用しています。

class Singleton {
public:
    static Singleton *instance();
protected:
    Singleton();
private:
    static Singleton *itsInstance;
}

static Singleton *Singleton::itsInstance = 0;

Singleton *Singleton::instance()
{
    if (!itsInstance)
    {
        itsInstance = new Singleton;
    }
    return itsInstance;
}

何か案は?

4

2 に答える 2

17
class Singleton {

};
 ^^^

これ!また、

static Singleton *Singleton::itsInstance = 0;

交換された:

Singleton *Singleton::itsInstance = 0;

static定義ではなく宣言でのみ必要です。

于 2013-02-06T04:09:33.793 に答える
1

クラス定義の後にセミコロンがありませんstatic

static Singleton *Singleton::itsInstance = 0;

する必要があります

Singleton *Singleton::itsInstance = 0;
于 2013-02-06T04:11:33.527 に答える