我是 C++ 的新手,正在尝试使用类和静态变量。
我已经找到了使代码运行的解决方案,但我不确定为什么这有效以及为什么我以前的方法不起作用
#include <iostream>
using namespace std;
class Person {
static int id;
public:
void createPerson() {
id++;
cout << id << endl;
}
};
int Person::id = 0;
int main() {
Person Person1;
Person Person2;
Person1.createPerson();
Person2.createPerson();
}
我想知道为什么我必须在类外声明 id 的值。以及为什么我不能有类似的东西..
class Person {
static int id = 0;
public:
void createPerson() {
id++;
cout << id << endl;
}
};
最佳答案
static
数据成员不是对象的一部分,因此您需要通过提供该定义来明确告诉编译器将它们存储在哪个翻译单元中。
请注意,类模板的静态数据成员可以在头文件中定义。
在 C++17 中,static
数据成员可以声明为 inline
,因此不需要外联定义。
关于c++ - 为什么我不能在类中为静态变量设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803204/