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文件。


好读:
定义和声明有什么区别?

于 2012-06-08T02:44:05.470 回答
0

仔细看看你的类定义。您会注意到它没有访问说明符......这意味着所有类访问默认为......私有。

制作静态的东西并不意味着它是“公共的”。

于 2012-06-08T05:31:54.443 回答