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

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

05.10.2019, 14:26. Показов 4169. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru