我正在尝试使用Xcode在C ++,Mac OS上创建一个非常经典的单例 我创建了Class MySingleton,如下所示:
class MySingleton{
private:
int val;
static MySingleton *instance;
MySingleton(){
val = 0;
}
public:
int getVal(){
return val;
}
void setVal(int iVal){
val = iVal;
}
static MySingleton* getInstance(){
if(instance == NULL)
instance = new MySingleton();
return instance;
}
};
Linker抱怨静态MySingleton * getInstance() 按照链接器消息:
架构x86_64的未定义符号:“MySingleton :: instance”, 引自: main.o中的MySingleton :: getInstance()ld:找不到架构x86_64 clang的符号:错误:链接器命令失败并带有退出代码 1(使用-v查看调用)
有人可以帮忙吗?也许我需要在Xcode上设置一些东西,顺便说一下版本是4.2.1,而我无法做到这一点。 感谢。
答案 0 :(得分:5)
您需要在cpp文件中定义静态变量,如下所示:
MySingleton *MySingleton::instance = 0;
答案 1 :(得分:1)
需要在cpp文件中定义静态成员MySingleton。在标题中,您只声明了它。有关详情,请参阅此处:Why do static variables need to be declared twice in C++
答案 2 :(得分:1)
据我所见,您已声明static MySingleton *instance
,但未在任何地方定义。