有很多在線文檔解釋如何編寫模板方法,但沒有太多關於如何調用它們的例子,以及如何在代碼中使用它們。如何調用模板方法?
我有一個模板方法是這樣的:在代碼
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);
我編譯這段代碼沒有任何錯誤。但是,當我試圖用這個方法我收到以下錯誤:
錯誤LNK1120:1周無法解析的外部
和
錯誤LNK2019:無法解析的外部符號「市民:靜態無效__cdecl VectorConvertor :: AppendToVector(class std :: vector> &,class std :: vector> &)「(?? $ AppendToVector @ E @ VectorConvertor @@ SAXAEAV?$ vector @ EV?$ allocator @ E @ std @@@ std @@ 0 @ Z)在函數「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性病@@ V'$ @分配器@ _W 2 @@ 3 @@ Z)
當我沒有在我的代碼中使用此方法我沒有收到任何錯誤消息。調用它時我做錯了什麼?我錯過了什麼嗎?
我使用Visual Studio 2010 Express版本。
沒有幫助的,但這些類型的錯誤信息只是reas爲什麼我停止使用C++編碼。 – 2010-11-24 19:30:20
爲了清楚起見,不要將`template method`(這是一個設計模式)與`class template member function`和`function template`混淆。 – 2010-11-24 19:39:15