私はかなり新しいC++であり、ヘッダーやテンプレートの経験はあまりなく、それらを組み合わせた経験はありませんでした。だから、私が作成したクラスを使用しようとすると問題に遭遇しました。次のように私のクラス定義とヘッダは、次のとおりです。 J.hそれは、ヘッダーだためJ.テンプレートクラスのヘッダーを使用するC++
#ifndef J_H
#define J_H
template<class t>
class J {
public:
void speak();
};
#endif
J.cppは、関数定義を持つテンプレートクラスのヘッダファイルです。
#include "J.h"
#include <iostream>
template<class T> void J<T>::speak(){
std::cout << "Hello from j";
}
main.cppには、主な機能を持っており、私の問題は、私はg++ J.h J.cpp main.cpp
でコンパイルするとき、私はエラーundefined reference to J<int>::speak()
を得るということですが、エラーなしg++ J.h J.cpp
ランをやっJ.
#include "J.h"
int main(){
J<int> j;
j.speak();
}
を使用しようとします。私は非常にテンプレートに新しいので、任意の助けに感謝します。前もって感謝します。
おそらく[テンプレートはヘッダーファイルにのみ実装できますか?](http://stackoverflow.com/q/495021/5980430) –