Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 29.09.2018
Сообщений: 23

Перегрузка оператора потокового вывода

05.10.2019, 14:26. Показов 4207. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вылетает ошибка о том что слишком много параметров функции (строка 54)
файл.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//
//
//  Generated by StarUML(tm) C++ Add-In
//
//  @ Project : Untitled
//  @ File Name : rectangle.h
//  @ Date : 04.10.2019
//  @ Author : 
//
//
 
 
#if !defined(_RECTANGLE_H)
#define _RECTANGLE_H
 
 
class rectangle {
public:
    float height;
    float weight;
 
    float area(float a, float b);
    float perimeter(float a, float b);
    rectangle() // конструктор
    {
        height = 0;
        weight = 0;
    }
    rectangle(float a, float b) // конструктор с параметрами
    {
        height = a;
        weight = b;
    }
    ~rectangle()
    {
        cout << "Вызвался деструктор " << this << endl;
    }
    rectangle(const rectangle& other) // конструктор копирования
    {
        this->height = other.height;
        this->weight = other.weight;
    }
    void operator = (const rectangle& other) // перегрузка оператора "="
    {
        this->height = other.height;
        this->weight = other.weight;
    }
    rectangle& operator ++ () // перегрузка оператора инкремента 
    {
        this->height += 1;
        this->weight += 1;
        return *this;
    }
    ostream& operator<< (ostream& os, const rectangle& point) // перегрузка оператора потокового вывода
    {
        os << point.height << " " << point.weight;
        return os;
    }
};
 
#endif  //_RECTANGLE_H
А здесь (на строке 46) "отсутствует оператор << соответствующий этим операндам"
заголовочный_файл.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//
//
//  Generated by StarUML(tm) C++ Add-In
//
//  @ Project : Untitled
//  @ File Name : rectangle.cpp
//  @ Date : 04.10.2019
//  @ Author : 
//
//
 
 
#include "rectangle.h"
#include <iostream>
#include <fstream>
#include <string>
#include <locale.h>
using namespace std;
 
float rectangle::area(float a,float b) {
    float result = a * b;
    return result;
}
 
float rectangle::perimeter(float a, float b) {
    float result = (a + b) * 2;
    return  result;
}
int main()
{
    setlocale(LC_ALL, "rus");
    
    cout << "Введите значения для высоты/долготы: ";
    float valueH, valueW;
    cin >> valueH >> valueW;
    rectangle first(valueH, valueW);
    rectangle second(first);
 
    rectangle second2;
    second2=first; // реализация перегрузки оператора "="
 
    rectangle third;
    third = first;
    ++third; // реализация перегрузки оператора инкремента
 
    cout << first;
 
    cout << "Периметер прямоугольника равен: ";
    first.perimeter(first.height, first.weight);
    cout << "Площадь прямоугольника равна: ";
    first.area(first.height, first.weight);
 
    /*string path = "myFile.txt";
    fstream fs;
    fs.open(path, fstream::in | fstream::out | fstream::app);
    if (!fs.is_open)
    {
        cout << "\tОшибка открытия файла!" << endl;
    }
    else
    {
        cout << "\tФайл открыт!" << endl;
    }
    fs.close();*/
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2019, 14:26
Ответы с готовыми решениями:

Перегрузка потокового оператора (<<). Выдает адрес вместо значения
Сабж. Все компелится нормально. Если делать &lt;&lt; void то работает ок см комменты если делать класса std::ostream&amp; то возвращает 16чное...

Перегрузка потокового ввода/вывода
Вот сама перегрузка ostream&amp; operator&lt;&lt; (ostream&amp; out, Poli&amp; outstream) { out&lt;&lt;&quot;Степень полинома=&quot;&lt;&lt;outstream.n&lt;&lt;endl; ...

Перегрузка потокового ввода-вывода
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций &lt;&lt; и &gt;&gt;. Вот что у меня есть: ...

4
 Аватар для ibse
136 / 76 / 60
Регистрация: 14.09.2019
Сообщений: 218
05.10.2019, 14:52
Лучший ответ Сообщение было отмечено Right-now как решение

Решение

Right-now, оператор<< сделай как обычную функцию, а не метод класса
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.10.2019, 15:01
Цитата Сообщение от ibse Посмотреть сообщение
Right-now, оператор<< сделай как обычную функцию, а не метод класса
Right-now, не "как обычную функцию", а как дружественную функцию. Т.е. в описании класса эта функция должна быть описана с квалификатором friend. Тогда внутри функции можно будет обращаться к закрытым полям класса. А в остальном, да, как обычная функция не-член класса.
0
 Аватар для ibse
136 / 76 / 60
Регистрация: 14.09.2019
Сообщений: 218
05.10.2019, 15:37
Цитата Сообщение от L0M Посмотреть сообщение
не "как обычную функцию", а как дружественную функцию
зачем? у ТС же все поля открытые
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
05.10.2019, 18:06
Цитата Сообщение от ibse Посмотреть сообщение
зачем? у ТС же все поля открытые
Для порядка. К порядку надо привыкать.
Не всегда же ТС будет в классах все поля открытыми делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2019, 18:06
Помогаю со студенческими работами здесь

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

Перегрузка операторов потокового ввода вывода
Есть класс &quot;деканат&quot;, полем которого есть список студентов, объектов из класса &quot;Студент&quot;. Как переопределяя операторы...

Перегрузка потокового ввода/вывода для класса с полем типа string
Возможно ли перегрузить &gt;&gt; и &lt;&lt; или придётся заменить переменную string на массив char? У меня ошибка появляется: &quot;бинарный...

Перегрузка оператора вывода в С++ (для вывода данных вектора)
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для этого класса есил можно помогите. ...

Перегрузка оператора вывода
struct SomeStruct { std::ostream&amp; operator&lt;&lt; (std::ostream&amp; s/*, SomeStruct&amp;*/) { return s &lt;&lt; &quot;123&quot;; }; }; int main() {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru