私は学校の課題に取り組んでいますが、この奇妙なエラーが発生します (私は C++ にまったく慣れていません)。
1500 から 1900 の間の最初の値を見つける必要があります。最初にビルドするときはすべて問題ありませんが、次回ビルドすると次のエラーが発生します。
error LNK2005: "bool __cdecl greaterThan1500SmallerThan1900(int)" (?greaterThan1500SmallerThan1900@@YA_NH@Z) already defined in Lab5.obj
その後、コードを少し変更すると (述語関数の型を double に変更すると)、もう一度ビルドされます。
template<typename T>
T MyStlClass<T>::myFindIf(list<T> &theList) {
list<T>::iterator it = find_if(theList.begin(), theList.end(), greaterThan1500SmallerThan1900);
return *it;
}
bool greaterThan1500SmallerThan1900(int value){
return (value >= 1500 && value <= 1900);
}
このサイトで、「.cpp」ファイルをインクルードしているためだと読んだことがありますが、一方で、テンプレートを使用しているときに「.cpp」ファイルをインクルードする必要があることも読みました。