LINUX.ORG.RU

template в классе


0

0

Можно ли написать template метода в классе?

Я тут пробую, но g++ пишет:
Internal error: Segmentation fault.

ps Такой ошибки от g++ я ещё не видел :)

anonymous

Ты бы написал здесь код, который приводит к такому, а то пока что ничего сказать нельзя

anonymous
()

сообщение об ошибке нормальное:) Visual CPP 6 тоже на шаблон с ошибками может выдать интернал еррор

dilmah ★★★★★
()

если g++ 2.95 то "нормальная" ошибка, если g++ >3 то должно работать. 3.0 не уверен (бросил из-за тормозов) но >=3.1 точно
работает.

простейший "книжный" пример:

template<class T>
class Complex {
    T re,im;
    Complex(T re, T im) : re(re), im(im) {}
    Complex(const Complex<T>& c) : re(c.re), im(c.im) {}
    template<class T1>
    Complex(const Complex<T1>& c) : re(c.re), im(c.im) {}
/// ... 
};
тогда можно так:
Complex<float> cf(1.,0.);
Complex<double> cd(cf);

что очень полезно для передачу параметром в функцию.

то-есть одна из важнейших полезностей шаблонов-членов шаблонов
это взаимооперирование с объектами того-же шаблона, но с другим
параметром. 

пример из STL : auto_ptr, там это вообще необходимо чтобы
преобразовывать "умные" указатели на производный класс в 
"умные" указатели на базовый.

HTH.

PS. извиняюсь за возможные опечатки в коде --- печатал чтоб идею проиллюстрировать.

anonymous
()

Спасибо. Оказалось можно, у меня ошибка (синтаксис) была. Поправил и все ОК.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.