访问有关静态变量的问题

时间:2012-06-08 02:42:14

标签: c++

我在某个头文件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

我不知道我做错了什么。有人可以帮助纠正错误吗?

2 个答案:

答案 0 :(得分:3)

您收到的错误是 链接错误 而不是编译错误。
链接器告诉您它找不到Class1::var1

的定义

您只是 宣布 向量成员,但没有 定义 它。
添加:

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

只有一个 的cpp文件。


好读:
What is the difference between a definition and a declaration?

答案 1 :(得分:0)

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

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