类c++中的静态成员未定义引用

static member inside class c++ undefined reference

本文关键字:未定义 引用 静态成员 c++      更新时间:2023-10-16

为什么这段代码给我一个错误,即未定义对student::count的引用。我使用的是静态计数,我知道静态成员默认为0,但不知道为什么会给我一个错误。请解释一下。

#include <iostream>
using namespace std;
class Student{
static int count;
string name;

public:
Student(){
count++;
cout<<"I am  student"<<count<<endl;
}
int getCount() const
{
return count;
}
void setCount(int x){
count=x;
}

};
int main(){
Student stud[20];

return 0;
}

您对Student::count没有定义,违反了一个定义规则。把一个定义放在一个,也是唯一一个,翻译单元里。

请注意,如果static int count;定义,则几乎不可能使用静态成员。每次包含头文件时都会得到一个定义,这使得一个定义规则几乎不可能遵守。

在头中写入static int count;意味着:Compiler,在某个地方,您会发现一个作用域为此类的变量,它将是int,并将被命名为count

现在,您需要在某个地方实际实例化(定义)您的变量。也许在您的情况下,将int Student::count;添加到主文件中会很好。