| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Проблемы с перегрузкой обератора << в С++ |
| Автор: Pakshin A. S. 20.5.2006, 11:12 | ||||
Учебная прога:
Ошибки:
|
| Автор: DeadSoul 20.5.2006, 12:20 | ||
|
| Автор: MAKCim 20.5.2006, 12:59 | ||
|
| Автор: Pakshin A. S. 20.5.2006, 16:00 | ||
Не компилицца...
|
| Автор: DeadSoul 20.5.2006, 16:21 |
| Pakshin A. S., в какой строчке, какое сообщение об ошибке? |
| Автор: Pakshin A. S. 20.5.2006, 17:09 |
| error C2248: 'Re' : cannot access private member declared in class 'CComplex<int>' на 94'ой |
| Автор: Damarus 20.5.2006, 17:14 | ||
|
| Автор: Pakshin A. S. 20.5.2006, 17:19 |
| Damarus, error C2563: mismatch in formal parameter list на cout << C1 << endl << C2; |
| Автор: MAKCim 20.5.2006, 17:24 | ||||
Pakshin A. S.
смотрите мой пост выше Добавлено @ 17:25
ошибка потому что без <> operator<< просто сторонняя функция, не имеющая доступа к реализации CComplex |
| Автор: Damarus 20.5.2006, 17:51 |
| Pakshin A. S., не знаю, у меня всё работает: |
| Автор: Pakshin A. S. 20.5.2006, 18:01 | ||
MAKCim, поставлены <>... Ругается на эту строчку: error C2143: syntax error : missing ';' before '<'
Damarus, я не спорю, но у меня Microsoft Visual C++ 6.0, а на картинке вроде не тот компилятор, что у меня... |
| Автор: MAKCim 20.5.2006, 18:17 | ||
не знаю, может проблема в VS6.0 у меня все OK, проверял (g++ 4.0.2) сделайте public методы SetRe, SetIm, GetRe, GetIm и шаблон оператора operator<< (не используя friend), вместо obj.Re пишите obj.GetRe() и т д |
| Автор: Damarus 20.5.2006, 18:34 | ||||||||||||||||||
| Pakshin A. S., как я делал: 1. Скопировал твой код (9-ю постами выше). Попытался скомпилировать. Получил:
2. Добавил
и
3. Посмотрел MSDN по вопросу LNK2019. Там есть подходящий пример:
4. На основе этого примера добавил:
Попытался скомпилировать. Получил:
5. Добавил
После этого программа нормально скомпилировалась, но выдавала неверные результаты (вроде). Изменил операции в классе CComplex (см. выше). |
| Автор: Pakshin A. S. 20.5.2006, 19:51 |
Задача - использование именно дружественности. Damarus, Спасибо за подробный ответ. Но вот только пытаюсь пихать в разные места.. что-то пока не нашел комбинации верной... Добавлено @ 19:52 Говорил именно про проблемы с перегрузкой, а не с забытием возврата значения функциями... Добавлено @ 19:57 Так-то работат.. Сделал public все... |
| Автор: Damarus 20.5.2006, 20:31 | ||
Pakshin A. S., вот немного изменённый твой код (все отличия прокоментированы):
|
| Автор: Pakshin A. S. 20.5.2006, 21:30 |
| А у меня не компилицца! Похоже, нужно брать нормальную систему... |
| Автор: MAKCim 21.5.2006, 11:33 | ||||
имхо, дружественность надо использовать только когда это действительно нужно в данном случае можно обойтись без нее, хотя если такая задача ...
|