Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операций '<<' и '>>' - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ немагу найти ошибку http://www.cyberforum.ru/cpp-beginners/thread177581.html
#include <stdio.h> #include <iostream> #include <math.h> #include <conio.h> #include <stdlib.h> using namespace std; void main() { float x, ans;
C++ Реализовать программу для хранения данных Реализовать программу для хранения данных о ценах на компьютерные комплектующие. Предусмотреть следующие поля: наименование, инвентарный номер, габариты. Для изделий, присутствующих на складе, указать цену, для остальных – наименование поставщика и ожидаемый срок поставки (количество дней). Реализовать добавление элемента в список. Предоставить возможность отображения всех элементов списка и... http://www.cyberforum.ru/cpp-beginners/thread177573.html
циклы for, while C++
for: Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k. while: Дано натуральное число n. Поменять порядок следования цифр в этом числе на обратный. (только не по цифрам отдельно менять и выводить,а само число целиком)
C++ нужен ли свой деструктор
Есть класс class Vetv { public: Vetv(int a,int b, int *ves); Vetv(); virtual ~Vetv(void); int nFrom; int nTo; int *Ves;
C++ Одномерный массив http://www.cyberforum.ru/cpp-beginners/thread177553.html
Нужно написать прогу с использованием статического и динамического распределения памяти. Дан массив действительных чисел. Если его первый элемент не является максимальным элементом массива, то создать новый массив, расположив в нем элементы так, чтобы вначале массива шла группа элементов, больших первого элемента исходного массива. Затем - сам этот элемент, потом - группа элементов, меньших...
C++ Вывести все простые числа до n должно быть так bool SimpleNumber(long int) int main() telo ........ подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
17.10.2010, 19:23     Перегрузка операций '<<' и '>>'
Разберем ошибки:
Цитата Сообщение от robert19 Посмотреть сообщение
если поменять на List& List::operator << (int a)... Выдает ошибку
Нужно читать внимательней:
Цитата Сообщение от Nameless One Посмотреть сообщение
Замени в возвращаемом значении операторов int на List&, и в конце каждого из них пропиши
C++
1
return *this;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// если поменять на List&  List::operator <<  (int a)... Выдает ошибку
// и где же здесь ты поменял int на List& ?
int List::operator << (int a){
        Element* ph = new Element;
        ph->key = a;
        ph->next = 0;
        if (pend!=0){
                pend->next = ph;
                pend = ph;
        }
        else{
                pbeg = ph;
                pend = ph;
        }
        return *this;//тут ругается - ну ясен пень, *this - это ссылка на List, а в возвращаемом значении прописано int
}
Надо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
List& List::operator << (int a){// если поменять на List&  List::operator <<  (int a)... Выдает ошибку
        Element* ph = new Element;
        ph->key = a;
        ph->next = 0;
        if (pend!=0){
                pend->next = ph;
                pend = ph;
        }
        else{
                pbeg = ph;
                pend = ph;
        }
        return *this;
}
Пошли дальше...
C++
1
2
3
4
5
6
7
List& List::operator>>(List&){
 int a = pbeg->key; 
 Element* ph = pbeg;
 pbeg = pbeg->next;
 delete ph;
 return *this;
}
Было написано:
Цитата Сообщение от Nameless One Посмотреть сообщение
Замени 46 строку на
C++
1
a = pbeg->key;
А ты что сделал? Ты заменил тип аргумента оператора, и сделал a локальной. Зачем? Надо так:
C++
1
2
3
4
5
6
7
List& List::operator>>(int& a){
 a = pbeg->key; 
 Element* ph = pbeg;
 pbeg = pbeg->next;
 delete ph;
 return *this;
}
И не забудь соответственно изменить объявления операторов внутри класса
 
Текущее время: 17:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru