可能性の重複使用:関数テンプレートを使用しているとき、私はコンパイラエラーを取得しています
Why can templates only be implemented in the header file?
Undefined reference to template members
c++ template and header filesnamspace内の関数テンプレートを宣言し、クラスに
をクラス。関数テンプレートは、別々のソースファイルとヘッダーファイルの名前空間で宣言されています。
ここにいくつかのコード例を示します。
namespace A header file
namespace A {
...
...
template<typename T1, typename T2 >
bool OR(T1* j, vector<T2*>, float cut);
...
...
}
A cpp file
namespace A {
...
...
template<typename T1, typename T2 >
bool OR(T1* j, vector<T2*>, float cut){
....
....
}
}
は、私はそのように私が取得コンパイラエラーが(これは私の実際のコードから誤りであることに注意してくださいが、同じ考え方)は次のようであるクラス
class B cpp file (only member function)
#include "A.h"
void B::exmaple(){
if(A::OR(m_ptrObj, m_ptrvectortoOtherObj, m_cut)){
cout << "its true" << endl;
}
}
でこの名前空間を使用しています。
undefined reference to `bool JetFilters::OR<Jet, Jet>(Jet*, std::vector<Jet*, std::allocator<Jet*> >*, float)
上記のエラーが発生する理由は何ですか?
重複...いいえ、私は気にしません。 –