C++ 为什么出现错误LNK2001:在这种情况下,无法解析外部符号?
可能重复:C++ 为什么出现错误LNK2001:在这种情况下,无法解析外部符号?,c++,C++,可能重复: 我在web上找到了以下关于singleton实现的代码,并决定尝试一下: #include <iostream> class Singleton { Singleton(){} static Singleton *s_instance; public: static Singleton* getInstance() { if(!s_instance) s_instance = new Sing
我在web上找到了以下关于singleton实现的代码,并决定尝试一下:
#include <iostream>
class Singleton
{
Singleton(){}
static Singleton *s_instance;
public:
static Singleton* getInstance()
{
if(!s_instance)
s_instance = new Singleton();
return s_instance;
}
};
int main()
{
Singleton::getInstance();
return(0);
}
为什么在这种情况下“
s\u instance
”无法解决?我认为您应该先初始化s\u instance=NULL
。您可以看到以下链接:看看这个:您需要在类之外定义s\u实例。感谢克里斯和MyStuial.AddioRead,并且实际上还有一个小问题:静态数据成员需要在类外定义一次,即C++规则。但是为什么呢?如果使用作用域:,静态成员函数“getInstance()”具有可见性,但为什么“s_instance”会导致未解决的外部符号错误?欢迎使用堆栈溢出。当你说'initializes_instance=NULL
before'时,你能详细解释一下你的意思吗在‘什么’之前?
main.obj : error LNK2001: unresolved external symbol "private: static class Singleton
* Singleton::s_instance" (?s_instance@Singleton@@0PAV1@A)
C:\Users\boll\Documents\Visual Studio 2010\Projects\hello_world\Debug\hello_world.exe :
fatal error LNK1120: 1 unresolved externals'