У меня очень мало информации о том, что происходит с шаблонами С++, но я пытаюсь реализовать функцию, которая ищет вектор для элемента, удовлетворяющего заданному свойству (в этом случае поиск одного с указанным именем). Мое объявление в моем файле .h выглядит следующим образом:
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, касались не использования правильных библиотек, но поскольку это моя собственная функция, я не понимаю, почему это происходит.
Также, связанный вопрос: есть ли способ сделать параметр шаблона так, чтобы он был подклассом определенного класса, то есть шаблона?