這是我的模型代碼單例: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