这是我的模型代码单例:C++单例模式的代码无法运行,我不知道为什么
#include <iostream>
using namespace std;
class CSingleton
{
private:
CSingleton()
{
}
static CSingleton *m_pInstance;
public:
static CSingleton * GetInstance()
{
if(m_pInstance == NULL)
m_pInstance = new CSingleton();
return m_pInstance;
}
};
int main() {
CSingleton* p1 = CSingleton::GetInstance();
return 0;
}
当我运行这段代码,以下错误冲击片雷管undefined reference to CSingleton::m_pInstance
,我不知道知道我错在哪里,我只想写一个单一的模型。有人可以帮我吗?
您已声明'm_pInstance',但尚未定义它。在任何函数或类定义之外的文件级别添加此行:'CSingleton * CSingleton :: m_pInstance = nullptr;' –
这是2017年,人们仍然使用* singleton !!!!! * – army007
@ army007,它是2017和人仍然使用* COBOL * :-)尽管*被标记为基于某些人的反模式,但它仍然有用。从这个意义上讲,它与“goto”在同一条船上,来自函数和副作用的多个返回点,所有这些都可能被滥用,但在某些情况下是相当不错的。 – paxdiablo