qq_25347861
2017-03-03 08:28
采纳率: 11.1%
浏览 2.1k

c++单例模式编译报错无法解析的外部符号

最近在看单例设计模式从网上找了一个例子
class Singleton
{
private:
static Singleton* m_lpInstance;
Singleton(){};
public:
static Singleton *GetInstance()
{
if (NULL == m_lpInstance)
{
m_lpInstance = new Singleton();
}
return m_lpInstance;
}
};

main

Singleton *p1 = Singleton::GetInstance();

编译发现报错:
1>singletonModle.obj : error LNK2001: 无法解析的外部符号 "private: static class Singleton * Singleton::m_lpInstance" (?m_lpInstance@Singleton@@0PAV1@A)
1>E:\project\singletonModle\Debug\singletonModle.exe : fatal error LNK1120: 1 个无法解析的外部命令

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • shen_wei 2017-03-03 09:24
    已采纳
    点赞 评论
  • qq_25347861 2017-03-03 08:36

    自己已经找到问题了所在了;
    缺少了初始化:Singleton *Singleton ::m_lpInstance = NULL;

    但是为什么会报无法解析的外部符号错误呢?

    点赞 评论
  • oyljerry 2017-03-03 09:44
     static Singleton* m_lpInstance;
    

    因为对于静态变量来说,C++中规定了它需要初始化,如果不初始化就会找不到这个符号

    点赞 评论

相关推荐 更多相似问题