C++链接错误未定义参考
我试图端口这个Java单例类C++:C++链接错误未定义参考
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
}
我移植到这个C++代码:
class Singleton {
private:
Singleton() {
cout << "new Singleton is called" << endl;
}
static Singleton* uniqueInstance;
public:
static Singleton* getInstance() {
if (!uniqueInstance) {
uniqueInstance = new Singleton();
}
return uniqueInstance;
}
};
但我不能编译这个!和gcc链接器错误发生。
确保您定义的static
成员的声明外:
Singleton* Singleton::uniqueInstance = nullptr;
你也应该初始化为nullptr。 – 2013-03-24 08:59:34
@AlexChamberlain为什么?我的程序在没有使用nullptr的情况下没有错误地编译! – 2013-03-24 09:59:12
@Khajavi还没有高度优化?指针在初始化时不保证为零。 – 2013-03-24 18:10:04
你的CPP文件可能不为静态实例预留空间,则需要添加 Singelton* Singleton::uniqueInstance = NULL;
到您的CPP文件,然后将它分配第一个电话
请准确显示链接器错误是什么。 – seand 2013-03-24 08:04:00