1

いくつかのヘッダーファイルClass1.hppにクラスClass1があります

 class Class1
 {
   static std::vector<bool> var1;
   func();
  }


func()
{
 var1.clear();
 int t=0;
 do
 {
   var1.push_back(t++);
 }while(true); //its some condition

別のファイルの別のクラスの別の関数main()内で、var1を別のstd::vectorに割り当てています。

 std::vector<bool> var2=Class1::var1;

私がこれをしているとき、それは私にエラーを与えます:

undefined reference to Class1::var1

私は自分が間違っていることを理解していません。誰かがエラーを修正するのを手伝ってくれるほど親切にできますか?

4

2 に答える 2

3

発生するエラーは、コンパイルエラーではなくリンクエラーです。
リンカは、の定義が見つからないことを通知しますClass1::var1

ベクトルメンバーを宣言したばかりですが、定義していません。
追加:

std::vector<bool> Class1::var1;

cppファイルの1つだけに。


良い読み物:
定義と宣言の違いは何ですか?

于 2012-06-08T02:44:05.470 に答える
0

クラス定義をもう少し詳しく見てください。アクセス指定子がないことに気付くでしょう。これは、すべてのクラスアクセスがデフォルトでプライベートになっていることを意味します。

何かを静的にすることは、それが「公開」であることを意味するものではありません。

于 2012-06-08T05:31:54.443 に答える