c – 如何调用模板方法?

前端之家收集整理的这篇文章主要介绍了c – 如何调用模板方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有很多在线文档解释了如何编写模板方法,但没有太多关于如何调用它们的示例,如何在代码中使用它们.

我有这样的模板方法

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.

解决方法

在C中,使用模板时无法在.cpp文件中分隔定义.您需要将定义放在头文件中.看到:

http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12

原文链接:https://www.f2er.com/c/117571.html

猜你在找的C&C++相关文章