我有这样的模板方法:
VectorConvertor.h
template <class T> static void AppendToVector(std::vector<T> & VectorToBeAppended,std::vector<T> & VectorToAppend);
VectorConvertor.cpp
template <class T> void VectorConvertor::AppendToVector(std::vector<T> & VectorToBeAppended,std::vector<T> & VectorToAppend) { for (std::vector::size_type i=0; i<VectorToAppend.size(); i++) { VectorToBeAppended.push_back(VectorToAppend.at(i)); } }
代码中的使用尝试:
std::vector<uint8_t> InputData,OutputData; // ... VectorConvertor::AppendToVector(OutputData,InputData);
我编译此代码没有任何错误.但是,当我尝试使用此方法时,我收到以下错误:
error LNK1120: 1 unresolved externals
和
error LNK2019: unresolved external symbol “public: static void __cdecl VectorConvertor::AppendToVector(class std::vector > &,class std::vector > &)” (??$AppendToVector@E@VectorConvertor@@SAXAEAV?$vector@EV?$allocator@E@std@@@std@@0@Z) referenced in function “public: staticclass std::vector > __cdecl Utf8::WStringToUtf8(class std::basic_string,class std::allocator >)” (?WStringToUtf8@Utf8@@SA?AV?$vector@EV?$allocator@E@std@@@std@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@3@@Z)
当我在我的代码中不使用此方法时,我没有收到任何错误消息.在调用它时我做错了什么?我错过了什么吗?
我正在使用Visual Studio 2010 Express Edition.
解决方法
http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12