テンプレートクラスの静的メンバ変数の実装の仕方2020年04月06日 11時39分44秒

C++ のクラスに静的変数を実装し、定数値を複数のインスタンスで使い回せる。もちろん、同じことはテンプレートクラスでも出来る。ただ、テンプレートクラスの静的メンバ変数の記述方法を忘れることが多い。

まずは普通のクラスの静的変数の宣言と実装の仕方。

class C1
{   
    static const int variable;
};

const int C1::variable = 1;
ここはまだ、直観的で間違えることはない。

接ぎはテンプレートクラスの静的メンバ変数。

template< typename T > class C2
{   
    static const int variable;
};

template< typename T > const int C2< T >::variable = 2;
template が最初にきて、C2 の後のテンプレートの型指定をする。個人的には、この型指定を忘れることが多い。

C++17 以降だと、宣言文に直接定数を書いても大丈夫になった。

template< typename T > class C3
{   
    static const int variable = 3;
};
これだったら、忘れにくくて書きやすい。ただ、C++17 でも、これが出来るのは const のある定数だけ。const 無しは以前のように別途、実装する必要がある。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/04/06/9232236/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。