Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Шаблоны


Автор: bronislav 3.6.2008, 21:54
Есть шаблонный класс
Код

#ifndef TEMPL_H_
#define TEMPL_H_

template< class T >
class templ
{
    T* data;
public:
    templ( int n );
    virtual ~templ(  );
};

#endif /*TEMPL_H_*/


Вот его реализация:
Код

#include "templ.h"

template< class T >
templ< T >::templ( int n )
{
    data = new T [n];
}

template< class T >
templ< T >::~templ()
{
    delete [] data;
}


и использование
Код

#include "templ.h"

int main()
{
    templ< double > a( 4 );
    //templ< templ< double > > b( 5 );
    return 0;
}


Компиляция проходит без ошибок, а при линковке ошибки:
Код

undefined reference to `templ<double>::~templ()'
undefined reference to `templ<double>::templ(int)'


В чем бага?
Паралельно ищу в книгах.

Автор: Daevaorn 3.6.2008, 21:57
Цитата(bronislav @  3.6.2008,  22:54 Найти цитируемый пост)
В чем бага?
Паралельно ищу в книгах.

Реализация шаблона должна находится в той же единице трансляции что и клиентский к нему код. В вашем случае в templ.h

Автор: bronislav 3.6.2008, 22:37
Спасибо.
Ответ получен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)