'*'令牌之前的预期初始化程序

时间:2013-02-06 04:08:02

标签: c++ design-patterns

我正在尝试在设计模式一书中实现代码。我收到以下错误:

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;
}

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

class Singleton {

};
 ^^^

此!而且,

static Singleton *Singleton::itsInstance = 0;

替换为:

Singleton *Singleton::itsInstance = 0;

您只需要声明中的static而不是定义。

答案 1 :(得分:1)

您的课程定义后缺少分号,而您不想要static

static Singleton *Singleton::itsInstance = 0;

应该是

Singleton *Singleton::itsInstance = 0;