c ++单例尝试:未解析的外部符号[重复]
Posted
技术标签:
【中文标题】c ++单例尝试:未解析的外部符号[重复]【英文标题】:c++ singleton attempt: unresolved external symbol [duplicate] 【发布时间】:2013-09-25 12:14:26 【问题描述】:我是一名 c# 开发人员,尝试做 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);
;
(这应该是单例...)
这会导致错误: "error LNK2001: unresolved external symbol "private: static class myNamespace::Application myNamespace::Application::_instance" (?_instance@Application@myNamespace@@0V12@A)"
是因为我使用了我在类声明中声明的类吗?
非常感谢!
【问题讨论】:
【参考方案1】:你只声明_instance
在Application类,你需要在.cpp文件中定义它:
namespace myNamespace
Application Application::_instance;
第 9.4.2.2 节
静态数据成员在其类定义中的声明不是定义,并且可能是除 cv 限定的 void 之外的不完整类型。静态数据成员的定义应出现在包含该成员的类定义的命名空间范围内。在命名空间范围的定义中,静态数据成员的名称应使用 :: 运算符由其类名限定。
【讨论】:
天哪,它有效!!!!多谢。 (以myNamespace::Application myNamespace::Application::_instance;
为例)以上是关于c ++单例尝试:未解析的外部符号[重复]的主要内容,如果未能解决你的问题,请参考以下文章