Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2012, 02:25   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию перегрузка оператора вывода в шаблонном классе

Написал вот такой класс, функциональность опущу, перейду сразу к сути.

Декларирую класс следующим образом:
template <class T>
class MyClass
В нем метод:
friend ostream & operator <<< T> (ostream & ost, MyClass <T> & obj);

и описал следующим образом
template <class T>
ostream & operator << (ostream & ost, MyClass <T> & obj)
{
,,,,,,,,,

return ost;

}

Компилятор выбрасывает следующую ошибку:
[BCC32 Error] mainFile.cpp (33): E2299 Cannot generate template specialization from 'operator <<< T, minEl, maxEl> (ostream &, const Set <T,minEl,maxEl> &)'
Компилятор C + + Builder 2007
Ошибка выделена жирным шрифтом
Anubys вне форума Ответить с цитированием
Старый 14.03.2012, 09:59   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

template <class T>
ostream & operator << (ostream & ost, MyClass <T> & obj)
может етого тут не надо.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 14.03.2012, 12:17   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Сообщение от Krok27
может етого тут не надо.
оператор определен как функция-друг, а не как метод класса, поэтому надо.
не совсем понял, зачем в строке <T>:
friend ostream & operator <<< T> (ostream & ost, MyClass <T> & obj);
может оно не нужно вовсе?)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 14.03.2012, 15:15   #4
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
По умолчанию

Все кажется хорошо, но на этапе линкования выбрасывает ошибку
Исправил код, код вот такой
Код:
friend ostream& operator<<(ostream&, MyClass<T>&);

template<class T> ostream& operator<<(ostream& ost, MyClass<T>& obj)
{
          ......................................

	return ost;

}
[ILINK32 Error] Error: Unresolved external 'operator <<(std::basic_ostream<char, std::char_traits<char> >&, MyClass<int>&)' referenced from E:\C++\++¦\II T+¦+TT¦\L02 - +L+T+=L ¦TLT-T[+¦TL=L +L+L=¦¦]\DEBUG\MAINFILE.OBJ
Anubys вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Перегрузка оператора += и >> Jane-sad Помощь студентам 4 01.03.2013 15:38
Перегрузка оператора (C++) Sergey S Помощь студентам 6 08.01.2012 13:01
Переопределение оператора в классе Rekky Общие вопросы C/C++ 1 04.05.2011 16:44
Перегрузка оператора в шаблонном классе alex_alpha Общие вопросы C/C++ 0 12.08.2010 21:37
перегрузка оператора << z3rg Общие вопросы C/C++ 18 02.03.2010 02:58