Здравствуйте, AdUser, Вы писали:
AU>Такая проблемка. Есть программа из двух модулей. Один модуль содержит шаблонный класс, а другой — его использует. Все работает, если тело метода определено внутри класса. Если же метод определен вне класса (т. е. в cpp-файле, а не в h-файле), то я получаю ошибку компоновщика:
AU>error LNK2019: unresolved external symbol "public: void __thiscall C<class C117>::Print(void)" (?Print@?$C@VC117@@@@QAEXXZ) referenced in function _main
AU>Метод я определяю так:
AU>template <class T> void C<T>::Print(){
AU> cout<<Field.ToInt()<<endl;
AU>};
AU>Как избежать этой ошибки?
Можно оставь тело в h-файле, тока вынесити его из класса
типа
template<class T>
class SomeClass
{
int GetInt() const;
};
template<class T>
int SomeClass<T>::GetInt() const
{
return 12;
}
Или можно вынести тело в какой-нить hpp-файл а потом там где нужно подключать его.