Неопределённая ссылка на функцию шаблона класса

Почему возникает ошибка компиляции неопределённая ссылка при реализации в .cpp файле шаблонного кода, объявленного в .h файле?

Например, есть три файла:

main.cpp

#include "TestClass.h"

int main() {

    TestClass<char> testClass;
    testClass.v();
}

TestClass.h

#ifndef FILTER_TESTCLASS_H
#define FILTER_TESTCLASS_H

#include <iostream>

template <typename T>
class TestClass {

public:

    void v();
};


#endif //FILTER_TESTCLASS_H

TestClass.cpp

#include "TestClass.h"

template <typename T>
void TestClass<T>::v() {
    std::cout << "abc\n";
}

Компилятор говорит: неопределённая ссылка на «TestClass<char>::v()». Почему?


Ответы (0 шт):