中級 › undefined reference to 'Class::member' の原因と直し方(staticメンバ変数) › パターン2
undefined reference to 'Class::member' の原因と直し方(staticメンバ変数)
クラス内でstaticメンバ変数を宣言しただけで、クラスの外側での実体定義を書き忘れたときにリンクの段階で出るエラーです。
1 #include <iostream> 2 class Logger { 3 public: 4 static int count; 5 Logger() { count++; } 6 }; 7 ______________________ ^ 8 int main() { 9 Logger a, b, c; 10 std::cout << Logger::count << std::endl; 11 return 0; 12 }
undefined reference to `Logger::count'
空欄を埋めてコンパイル・実行を通す
エラーはコンパイラ(g++)ではなくリンカ(ld)から出ます。コンパイル自体は各行が文法的に正しいので通ってしまいます。
次の問題