SSブログ

シングルトンなクラス [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を抜けた後になるので、メモリリークをチェックすることができない!!
結局、サービスコントローラみたいな奴で管理することがいいのかも。 
 
注意と疑問 
派生クラスのコンストラクタをヘッダに書くと、リリースビルドしたときに参照変数を宣言すると呼ばれてしまうのはなぜ? 

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。