的代码如下:静态成员必须初始化?
#include <iostream>
using namespace std;
class A {
static int id_;
public:
static void setId(int id) {
id_ = id;
}
static int getId() {
return id_;
}
};
int main()
{
A::setId(10);
cout << A::getId() << endl;
return 0;
}
当我编译它在Xcode中,的Mac OS,有一个错误信息:
Undefined symbols for architecture x86_64:
"A::id_", referenced from:
A::setId(int) in main.o
A::getId() in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如果我添加一行:
int A::id_ = 10;
之前的main()
。然后,一切都很好。这是什么原因?
因为这就是声明静态成员的方式。 – 0x499602D2
@ 0x499602D2:**定义** –