クラスの静的コンストラクタを実現する方法を紹介します。
起動時に一度だけ行いたい処理を書く時などに便利です。
ただし、他の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で初期化しているので静的コンストラクタで処理している内容に意味はなかったりします。