我正在做一个学校作业,我收到了这个奇怪的错误(我对 C++ 很陌生)。
我应该找到介于 1500 和 1900 之间的第一个值。当我第一次构建它时,一切正常,但是当我下次构建它时,我收到此错误:
error LNK2005: "bool __cdecl greaterThan1500SmallerThan1900(int)" (?greaterThan1500SmallerThan1900@@YA_NH@Z) already defined in Lab5.obj
如果我然后稍微更改代码(将谓词函数中的类型更改为双精度),它会再次构建一次。
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”文件。