我在某个头文件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
我不知道我做错了什么。有人可以帮助纠正错误吗?
答案 0 :(得分:3)
您收到的错误是 链接错误 而不是编译错误。
链接器告诉您它找不到Class1::var1
您只是 宣布 向量成员,但没有 定义 它。
添加:
std::vector<bool> Class1::var1;
到 只有一个 的cpp文件。
好读:
What is the difference between a definition and a declaration?
答案 1 :(得分:0)
仔细看看你的班级定义。您会注意到它没有访问说明符..这意味着所有类访问都默认为.. private。
制作静态的东西并不意味着它是“公开的”。