我是ac#开发人员,尝试做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);
};
}
(这应该是一个单身汉...)
并导致错误:“错误LNK2001:无法解析的外部符号”私有:静态类myNamespace :: Application myNamespace :: Application :: _ instance“(?_instance @ Application @ myNamespace @@ 0V12 @ A) ”
是因为我使用的是在类声明中声明的类吗?
非常感谢!
您仅在Application类中声明 _instance
,需要在.cpp文件中定义它:
namespace myNamespace
{
Application Application::_instance;
}
第9.4.2.2节
静态数据成员在其类定义中的声明不是定义,并且可以是cv限定的void以外的不完整类型。静态数据成员的定义应出现在包含该成员的类定义的名称空间范围中。在命名空间范围的定义中,静态数据成员的名称应使用::运算符由其类名称限定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句