テンプレートから生成したクラスごとにクラス変数を設けて、
かつ、クラス変数の初期化をいちいちやらなくてもよい
という状況を作りたいと考えています。

そこでたとえば
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_の値が同じになってしまうようのなのですが。。。

そもそも、こういうクラス変数自体を
つくろうという考えが間違っているのでしょうか?
どなたかご存知でしたらお教えください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

これは結局 test というクラスの class_var_が


staticという意味になるので、同じ値になるのだと思いますが。

staticにする必要はあるんでしょうか?
とればお望みの動作になるように思いますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
例がわるくご指摘のとおりです。

実際にやりたかったのは
class A;
/*なんか整数で初期化できるクラス*/

template <int N> class test {
public:
static A* class_var() {
static A* class_var_= new A(N);
return class_var_;
}
};
だったので、呼び出すたびに生成したくなかったのです。

どうもややこしいやり方のような気がしてきたので
別の実装方法も考えてみます。

もし、アドバイスがございましたらお教えください。
ありがとうございました。

お礼日時:2002/03/18 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報