我想研究C++。 我寫了一個文件 「Singleton.h」 如下:編譯錯誤,當試圖在C++編譯一個單身人士
class Singleton
{
private:
static Singleton* m_this;
Singleton();
public:
static Singleton* getInstance(){
return m_this;
}
virtual ~Singleton();
};
我Singleton.cpp文件:
#include "StdAfx.h"
#include "Singleton.h"
Singleton::Singleton(){}
Singleton::~Singleton(){}
我在我的主要方法調用得到getInstance方法如下:
Singleton* s = NULL;
s = Singleton.getInstance();
但是,我得到的編譯錯誤:
error C2275: 'Singleton' : illegal use of this type as an expression
你知道這是爲什麼嗎?
既然你篡改反模式單身人士:爲什麼'virtual〜Singleton();'??? –
您還需要確保在'getInstance()'返回之前將'new Singleton'分配給'm_this'。 –