[C++]'undefined reference to 〇〇'というエラーが出たとき
タイトルのエラーは、定義されていない関数を呼び出そうとしたときに発生するエラーで初心者がよく陥りやすいものらしい。
自分も何回かこのエラーにあったので、自分がハマったときにどうしたら解決したか書いておく。
関数定義でネームスペースを指定するのを忘れている
.hファイルと.cppファイルが以下のようになっていたとき,aaa()を呼び出すとエラーが発生する。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #ifndef __A_CLASS_H #define __A_CLASS_H #ifdef __cplusplus class a_class { public: static void aaa(void* _); }; #endif #endif |
1 2 3 4 5 6 | #include "a_class.h" void aaa(void* _) { // Code } |
これは、.cppファイルの関数定義でa_classというネームスペースの指定を忘れているから起こる。
正しくは以下のようになる。
1 2 3 4 5 6 | #include "a_class.h" void a_class::aaa(void* _) { // Code } |
この記事へのコメントはこちら