Re: Шаблонные классы. Ошибка компоновщика
От: Glоbus Украина  
Дата: 21.07.04 10:25
Оценка: 2 (1)
Здравствуйте, 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-файл а потом там где нужно подключать его.
Удачи тебе, браток!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.