我有一個一類是單定義如下C++單例類返回const引用
class myData {
private:
myData (void); // singleton class.
// Copy and assignment is prohibted.
myData (const myData &);
myData & operator=(const myData &);
static myData* s_pInstance;
public:
~myData (void);
static const myData & Instance();
static void Terminate();
void myFunc() { cout << "my function..." ;}
};
//在CPP文件。
myData* myData::s_pInstance(NULL);
myData::myData(){}
myData::~myData()
{
s_pInstance = NULL;
}
const myData& myData::Instance()
{
if (s_pInstance == NULL)
{
s_pInstance = new myData();
}
return *(s_pInstance); // want to avoid pointer as user may deallocate it, so i used const referense
}
void main() {
(myData::Instance()).myFunc();
}
我收到以下錯誤
錯誤C2662: 'myData的:: myFunc的':不能從 '常量myData的' 轉換 '這個' 指針 'myData的&'
如何避免以上問題並從實例函數調用返回const引用的函數?
謝謝!
請參閱:http://stackoverflow.com/questions/1008019/c-singleton-design-pattern/1008289#1008289 –