OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

テンプレートクラスでのクラス変数

  • 暇なときにでも
  • 質問No.234250
  • 閲覧数119
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 94% (52/55)

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

そこでたとえば
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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル13

ベストアンサー率 34% (574/1662)

これは結局 test というクラスの class_var_が
staticという意味になるので、同じ値になるのだと思いますが。

staticにする必要はあるんでしょうか?
とればお望みの動作になるように思いますが。
お礼コメント
motsuan

お礼率 94% (52/55)

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

実際にやりたかったのは
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:42
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ