Есть класс, описанный полностью в одном файле:
Код: Выделить всё
// это вспомогательный класс, нет смысла его выносить отдельно
class Foo
{
};
class TestClass
{
public:
explicit TestClass() {}
virtual ~TestClass() {}
template<typename T>
void f_test(void) {}
};
Код: Выделить всё
TestClass *tc = new TestClass();
tc->f_test<Foo>();
delete tc;
Однако, если класс testClass раскидать по двум файлам (cpp и hpp) то, при попытке сборки, выскочит ошибка: undefined reference to `void TestClass::f_test<Foo>()'
Почему так?