类c++中的静态成员未定义引用
static member inside class c++ undefined reference
为什么这段代码给我一个错误,即未定义对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;
添加到主文件中会很好。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用