コードは次のとおりです。
#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()
。その後、すべてが順調です。その理由は何ですか?