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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2012, 22:17   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Новогодний гемморой студента v1.1

описание шаблонного класса:


Код:
template <typename Type>
class Box{
	public: Type T;
			Type* Next;
			Box(){T=0; Next=NULL;}
			Box(int t){T=t; Next=NULL;}
			friend ostream& operator<<(ostream &, Type &){cout<<T;};
};
мейн:


Код:
void main() {
Box<int> Bi[10];
Bi[0].T=10;
cout<<Bi[0];
}
ошибка

Цитата:
binary '<<' : no operator found which takes a right-hand operand of type 'Box<Type>' (or there is no acceptable conversion)
Вопрос: НУ пачиму!? Я же перегрузил...
pinkiller вне форума Ответить с цитированием
Старый 02.01.2012, 22:35   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

делетеделетеделете
_Bers вне форума Ответить с цитированием
Старый 02.01.2012, 22:39   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы посмотрите какой оператор вы обьявили, и какой хотите.
а так же гляньте табличку http://cplusplus.com/doc/tutorial/classes2/
последняя в разделе про перегрузку.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.01.2012, 23:02   #4
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Феникс, посмотрел какой объявил и какой хочу...
Оператор вывода на экран из библиотеки iosteam которую подключаю...
который и перегрузил... что не так то? ><


И вроде там самая последняя табличка про расширение области видимости... ><
pinkiller вне форума Ответить с цитированием
Старый 02.01.2012, 23:17   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хорошо, вы обьявили оператор для:
ostream и Type.
в итоге это выходит:
ostream и int
а вы передаете ostream и Box<int>

кстати, обратите внимание что такая перегрузка правильно делается статическим оператором.
Цитата:
И вроде там самая последняя табличка про расширение области видимости... ><
я же просил посмотреть последнюю для раздела про перегрузку(он первый там, а таблица помоему вторая)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новогодний хранитель экрана made in programmersforum.ru _PROGRAMM_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 05.01.2012 12:37
Новогодний гемморой студента pinkiller Общие вопросы C/C++ 20 04.01.2012 00:01
Задания от студента. Evten Фриланс 7 30.11.2010 10:50
Мой новогодний компьютер meg33 Свободное общение 2 27.12.2007 16:16