У меня очень мало идей о том, что происходит с шаблонами C++, но я пытаюсь реализовать функцию, которая ищет вектор для элемента, удовлетворяющего заданному свойству (в этом случае поиск для одного с указанным именем). Моя декларация в моей .h файла выглядит следующим образом:Проблема с шаблоном вызывает ошибку компоновщика (C++)
template <typename T>
T* find_name(std::vector<T*> v, std::string name);
Когда я компилирую, я получаю эту ошибку компоновщика, когда я вызываю функцию:
Error 1 error LNK2019: unresolved external symbol "class Item * __cdecl find_name<class Item>(class std::vector<class Item *,class std::allocator<class Item *> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" ([email protected]@@@@[email protected]@[email protected]@@[email protected]@@@[email protected]@@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "public: class Item * __thiscall Place::get_item(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" ([email protected]@@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) place.obj Program2
Опять же, я новичок в шаблоны, так что я не знаю, что происходит. Все экземпляры, найденные мной в LNK2019 через Google, касались не использования правильных библиотек, но поскольку это моя собственная функция, я не понимаю, почему это происходит.
Также, связанный вопрос: есть ли способ сделать параметр шаблона так, чтобы он был подклассом определенного класса, то есть шаблона?
какой компилятор вы используете? некоторые компиляторы не позволяют вам разделять объявление и определение на отдельные файлы для шаблонов. – Jordan
Действительно ли вы написали реализацию для своей функции шаблона? – begray
Вы также можете рассмотреть использование std :: find или std :: find_if –