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 回答