静的コンストラクタ

クラスの静的コンストラクタを実現する方法を紹介します。
起動時に一度だけ行いたい処理を書く時などに便利です。
ただし、他のstaticなオブジェクトと同じく、初期化順番は保証されない点は注意してください。

ヘッダはこんな感じ。

class Hoge
{
private:
	//! 静的コンストラクタ用のprivateな構造体
	struct Construct
	{
		Construct()
		{
			// ここに初期化処理を書きます
			sm_hoge = 0;
		}
	};
private:
	static Construct	sm_construct;	//!< 静的コンストラクタ
	static int			sm_hoge;
};

cpp側はこんな感じになります。

Hoge::Construct	Hoge::sm_construct;
int				Hoge::sm_hoge = 0;

ご覧のとおり、今回のパターンだとsm_hogeはもともと0で初期化しているので静的コンストラクタで処理している内容に意味はなかったりします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です