Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么出现错误LNK2001:在这种情况下,无法解析外部符号?_C++ - Fatal编程技术网

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”会导致未解决的外部符号错误?欢迎使用堆栈溢出。当你说'initialize
s_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'