这一定是非常微不足道的,但我找不到它:
struct Test {
static int n;
void Save(int val) {
Test::n = val;
}
};
int main() {
Test t;
t.Save(2);
return 0;
}
为什么在第4行有Test::n
未定义的引用?
答案 0 :(得分:9)
您需要定义静态:
struct Test {
static int n;
void Save(int val) {
Test::n = val;
}
};
int Test::n = 0;
请注意,定义必须出现在实现文件中,而不是标题中,否则会出现多重定义错误。
答案 1 :(得分:3)
您需要定义静态数据成员(不一定初始化它)。它将自动初始化为0。我想你得到了一个链接器错误。这是因为由于缺少定义,因此尚未分配数据成员。这与它的价值无关。