シングルトンなクラス [C++]
template<class T>
class CSingleton
{
public:
static T& GetInstance()
{
static T tInstance;
return tInstance;
}
protected:
CSingleton(void){}
~CSingleton(void){}
private:
CSingleton(const CSingleton& ref ){}
const CSingleton& operator=(const CSingleton& rer ){}
};
------
使い方
class CHogeService : public CSingleton<CHogeService >
{
public:
// Service Control
bool Start();
bool Stop();
// Service Method
bool GetHogeHoge( int Hoge );
private:
friend class CSingleton<CHogeService >;
CHogeService ();
~CHogeService ();
};
ってな感じ。
この方式のシングルトンの宿命として、デストラクタがMeinを抜けた後になるので、メモリリークをチェックすることができない!!
結局、サービスコントローラみたいな奴で管理することがいいのかも。
注意と疑問
派生クラスのコンストラクタをヘッダに書くと、リリースビルドしたときに参照変数を宣言すると呼ばれてしまうのはなぜ?
コメント 0