- ベストアンサー
テンプレートクラスでのクラス変数
テンプレートから生成したクラスごとにクラス変数を設けて、 かつ、クラス変数の初期化をいちいちやらなくてもよい という状況を作りたいと考えています。 そこでたとえば template <int N> class test { public: static int class_var() { static int class_var_ = N; return class_var_; } }; としたとき test<1>::class_var() と test<2>::class_var() はどのような値になるのでしょうか? VC++ではテンプレート全体で class_var_の値が同じになってしまうようのなのですが。。。 そもそも、こういうクラス変数自体を つくろうという考えが間違っているのでしょうか? どなたかご存知でしたらお教えください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
これは結局 test というクラスの class_var_が staticという意味になるので、同じ値になるのだと思いますが。 staticにする必要はあるんでしょうか? とればお望みの動作になるように思いますが。
お礼
ご回答ありがとうございます。 例がわるくご指摘のとおりです。 実際にやりたかったのは class A; /*なんか整数で初期化できるクラス*/ template <int N> class test { public: static A* class_var() { static A* class_var_= new A(N); return class_var_; } }; だったので、呼び出すたびに生成したくなかったのです。 どうもややこしいやり方のような気がしてきたので 別の実装方法も考えてみます。 もし、アドバイスがございましたらお教えください。 ありがとうございました。