我有一個單例類。多文件訪問單例類
在A.H
class single
{
public:
static single *Instance;
static single* getInstance()
{ if(!Instance) Instance = new single;
return Instance;
}
void hello() { cout<<"Hello"; }
private: single(){ }
}
在A.cpp
single *single::Instance = 0;
std::auto_ptr <single> SINGLE_OBJ (single::getInstance());
在B.cpp
#include "A.h"
SINGLE_OBJ->hello();
我得到以下錯誤: SINGLE_OBJ沒有在這個範圍內聲明。
你爲什麼不使用單一::的getInstance() - >你好();在B.cpp中? – Rabbid76
爲什麼通過'auto_ptr'在外部管理實例的內存?它使用'new'分配的事實是一個實現細節。它應該保持在'single'的內部用於封裝,並且確保即使用戶不將指針放在auto_ptr中也可以清除內存。順便說一下,C++ 11用'std :: unique_ptr'替換了不推薦使用的'std :: auto_ptr'類模板。 – TheOperator