Есть класс с шаблонным методом. Объявление лежит в myclass.h:
#include <iostream>
class MyClass
{
//Тут поля
public:
template<typename T> void TemplateMethod(T data);
//Тут еще методы.
};
Реализация метода в myclass.cpp:
#include "myclass.h"
template<typename T> void MyClass::TemplateMethod(T data)
{
std::cout << "Data: " << data << std::endl;
}
И в main.cpp:
#include "myclass.h"
int main(int argc, char **argv)
{
MyClass mc;
mc.TemplateMethod("test");
return 0;
}
Линковщик матерится:
/data/home/hetor/Projects/C++/test_Class/main.cpp:6: undefined reference to `void MyClass::TemplateMethod<char const*>(char const*)'
При чем если засунуть реализацию в myclass.h, то все работает. ЧЯДНТ? (Только не говорите, что пишу на плюсах).