Есть много онлайн-документов, объясняющих, как писать методы шаблонов, но не так много примеров их вызова, как их использовать в коде.Как вызвать метод шаблона?
У меня есть шаблонный метод, как это:
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 (класс std :: vector> &, класс std :: vector> &) "(?? $ AppendToVector @ E @ VectorConvertor @@ SAXAEAV? $ vector @ EV? $ allocator @ E @ std @@@ std @@ 0 @ Z), на которые ссылается функция «public: staticclass std :: vector> __cdecl Utf8 :: WStringToUtf8 (класс 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 Edition.
не полезно, но эти сообщения об ошибках были просто реалом на почему я прекратил кодирование с C++. – 2010-11-24 19:30:20
Для наглядности не путайте `template method` (который является шаблоном проектирования) с` функцией шаблона-шаблона `и` function template`. – 2010-11-24 19:39:15