Tôi có rất ít ý tưởng về các mẫu C++, nhưng tôi đang cố triển khai hàm tìm kiếm vectơ cho phần tử thỏa mãn thuộc tính đã cho (trong trường hợp này, tìm kiếm cho một cái có tên). Tuyên bố của tôi trong tập tin .h của tôi là như sau:Vấn đề mẫu gây ra lỗi liên kết (C++)
template <typename T>
T* find_name(std::vector<T*> v, std::string name);
Khi tôi biên dịch, tôi nhận được lỗi mối liên kết này khi tôi gọi hàm:
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
Một lần nữa, tôi mới vào mẫu nên tôi không biết chuyện gì đang xảy ra. Tất cả các trường hợp tôi đã tìm thấy của LNK2019 thông qua Google đã được về không sử dụng các thư viện chính xác, nhưng vì đây là chức năng của riêng tôi, tôi không thấy lý do tại sao điều này sẽ xảy ra.
Ngoài ra, một câu hỏi có liên quan: Có cách nào để tạo tham số mẫu để nó phải là lớp con của một lớp nhất định, tức là mẫu không?
bạn đang sử dụng trình biên dịch nào? một số trình biên dịch ngăn bạn phân tách khai báo và định nghĩa thành các tệp riêng biệt cho các mẫu. – Jordan
Bạn có thực sự viết triển khai cho chức năng mẫu của mình không? – begray
Bạn cũng có thể xem xét sử dụng std :: find hoặc std :: find_if –