c ++单例尝试:未解析的外部符号

Cha*_*IER 4 c++ singleton

我是ac#developctor试图做c ++的事情,我无法理解这里的问题:

namespace myNamespace
{
    class Application
    {
    private:
        Application(void);
        ~Application(void);

        // Not copyable
        Application(const Application&);
        Application& operator= (const Application&);

        static Application _instance; 

        [...]

    public:
        static Application& current(void);
    };
}
Run Code Online (Sandbox Code Playgroud)

(这应该是单身......)

这会导致错误:" 错误LNK2001:未解析的外部符号"private:static class myNamespace :: Application myNamespace :: Application :: _ instance"(?_ instance @ Application @ myNamespace @@ 0V12 @ A) "

是因为我正在使用我在类声明中声明的类吗?

非常感谢!

bil*_*llz 13

您只在Application类中声明 _instance,您需要在.cpp文件中定义它:

namespace myNamespace
{
    Application Application::_instance; 
}
Run Code Online (Sandbox Code Playgroud)

§9.4.2.2

静态数据成员在其类定义中的声明不是定义,除了cv-qualified void之外可能是不完整的类型.静态数据成员的定义应出现在包含成员类定义的命名空间范围内.在命名空间作用域的定义中,静态数据成员的名称应使用::运算符通过其类名限定.