单例模式,这个错误怎么解决

dollarne 2015-05-02 09:43:52
CSingleton.h
class CSingleton
{
private:
CSingleton(){} //构造函数是私有的
static CSingleton *m_pInstance;
public:
static CSingleton* GetInstance()
{
if(m_pInstance == 0) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
};

main.cpp
#include <iostream>
#include "CSingleton.h"
using namespace std;
int main()
{

CSingleton *st = CSingleton::GetInstance();
}

编译时错误为1>main.obj : error LNK2001: 无法解析的外部符号 "private: static class CSingleton * CSingleton::m_pInstance" (?m_pInstance@CSingleton@@0PAV1@A)
1>E:\Work\VS2005 Sapce\Singleton\Debug\Singleton.exe : fatal error LNK1120: 1 个无法解析的外部命令。
小弟刚转C++,希望指教
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2015-05-04
  • 打赏
  • 举报
回复
类的静态成员变量, 需要在类外定义, 在类中的只是声明.
pengyw 2015-05-02
  • 打赏
  • 举报
回复
CSingleton *m_pInstance 要初始化一下: CSingleton *m_pInstance = 0;// or NULL
brookmill 2015-05-02
  • 打赏
  • 举报
回复
静态的类成员需要初始化。 using namespace std; CSingleton *CSingleton::m_pInstance = 0; // 加上这一行 int main()

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧