我正在尝试在设计模式一书中实现代码。我收到以下错误:
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;
}
有什么想法吗?
答案 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;