私は、次のファイルを持っている:C++ヘッダーとソースディレクトリ
listDriverTest.cpp
src/List.cpp
headers/List.h
ザ・はList.cppに含めるザ・はlistDriverTest.cppに含める
#include "../headers/List.h"
が
#include "headers/List.h"
です次の文でコンパイルします。
g++ listDriverTest.cpp "src/List.cpp"
「定義されていない参照」エラーがかなり発生します。
listDriverTest.cpp:(.text+0x81): undefined reference to `List<int>::List()'
listDriverTest.cpp:(.text+0x8f): undefined reference to `List<int>::add(int)'
listDriverTest.cpp:(.text+0x9d): undefined reference to `List<int>::add(int)'
...
どのように適切に含んで使用してコンパイルが適切に機能するためには、これらの3つのファイルをコンパイルする必要がありますか?私はlistDriverTest.cppをコンパイルし、同じディレクトリ内のすべてのファイルで正しく実行するようにしましたが、このように分割されていないときは正しくありません。
list.hヘッダーを見つけることができないという非常に具体的なエラーが表示されないことに驚いています。 –
テンプレートを使って作業するときは、ヘッダファイルにすべてを定義する必要があります。http://www.parashift.com/c++-faq-lite/templates.html#faq-35.13 –
*未定義のリファレンス*はリンカのエラーです。ヘッダ/ソースの場所とは関係ありません。 –