Проблема шаблона вызывает ошибку компоновщика (C ++)

Я очень мало представляю, что происходит с шаблонами C ++, но я пытаюсь реализовать функцию, которая ищет вектор для элемента, удовлетворяющего заданному свойству (в данном случае, поиск элемента с заданным именем). Моя декларация в моем .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> >)" (??$find_name@VItem@@@@YAPAVItem@@V?$vector@PAVItem@@V?$allocator@PAVItem@@@std@@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@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> >)" (?get_item@Place@@QAEPAVItem@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) place.obj   Program2

Опять же, я новичок в шаблонах, поэтому я не знаю, что происходит. Все случаи, когда я обнаружил LNK2019 через Google, были о том, что я не использовал правильные библиотеки, но, поскольку это моя собственная функция, я не понимаю, почему это происходит.

Кроме того, связанный с этим вопрос: есть ли способ сделать параметр шаблона таким образом, чтобы он был подклассом определенного класса, то есть шаблона?

Ответы на вопрос(6)

Ваш ответ на вопрос