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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,020
#1

Перегрузка потока ввода - C++

10.04.2011, 11:59. Просмотров 1787. Ответов 11
Метки нет (Все метки)

Помогите мне пожалуйста. Пыта
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class rectangle
{
    int *a;
    int *b;
    friend istream& operator >> (istream &inp, rectangle &r);  //переопределениезнака>>
    friend ostream& operator << (ostream &outp, rectangle &r); 
    friend rectangle &operator -(rectangle &r);
    friend bool operator +(rectangle &r, rectangle &r1);
public:
    
    rectangle();
    ~rectangle();
 
    rectangle & operator !()
    {
        if ((*a)!=(*b))
            cout<<"First rectange is not squery";
        else
            cout<<"`First rectange is squery";
        return *this;
    };
 
    istream& operator >> (istream &inp, rectangle &r1)
    {
    cout<<"First size is ";
    inp>>r1->;
    cout<<"Second size is ";
    inp>>(*r.b;
    }
    
    bool operator == (rectangle &r)
    {
        int s1, s2;
        s1=(*a)*(*b);
        s2=(*r.a)*(*r.b);
        if(s1==s2)
            return 1;
        else
            return 0;
    }
    
};
 
rectangle::rectangle()
{
    a=new int;
    b=new int;
}
 
 
 
 
rectangle::~rectangle()
{
    delete a;
    delete b;
}
 
rectangle &operator -(rectangle &r)
{
    int c;
    c=abs((*r.a)-(*r.b));
    cout<<"\nRaznica between sizes is  "<<c<<" sm\n";
return r;
}
 
bool operator +(rectangle &r, rectangle &r1)
{
    int S, s1, s2;
    s1=(*r.a)*(*r.b);
    s2=(*r1.a)*(*r1.b);
    S=s1+s2;
    cout<<"\n"<<"Summa of the areas of two rectangles is "<<S;
    return 0;
}
 
 
int main()
{
    bool f;
    cout<<"Creation a fist rectangle:\n";
    rectangle rect;
    operator >>(istream &inp, rect)
    rect.operator !();
    operator -(rect);
    cout<<"\nCreation a new rectangle:\n";
    rectangle rect1;
    
    f=rect.operator ==(rect1);
    if (f)
    {
        cout<<"\nAreas of rectangles is equal";
    }
    else
        cout<<"\nAreas of rectangles is difference";
    
        operator +(rect, rect1);
 
_getch();
}
Пытаюсь перезагузить оператор ввода

error C2804: binary 'operator >>' has too many parameters
Вот такая ошибка)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2011, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка потока ввода (C++):

Перегрузка ввода/вывода в/из потока - C++
Никогда потоками не пользовался, поэтому не знаю. Как перегрузить для ввода из потока оператор operator &gt;&gt;? Как перегрузить для вывода в...

Перегрузка потока ввода-вывода - C++
Подскажите как правильно перегружать потоки, вот что я делал и какие ошибки появились Как правильно перегружать потоки записи и чтения в...

Перегрузка потока ввода вывода в dll - C++
Доброго времени суток. Мне нужно создать dll, которая содержит экспортируемый класс для работы с рациональными числами. Сам класс...

Перегрузка операторов ввода и вывода из потока в шаблонном классе - C++
Доброго времени суток. Пишу свой вектор. В нём надо перегрузить вышеназванные операторы. Vector.h class Vector { // ... ...

Перегрузка операций поместить и взять из потока! - C++
Вообщем взял этот код из книжке : std::ostream &amp; operator &lt;&lt; (std::ostream &amp; out,const kran &amp; r); std::istream &amp; operator &gt;&gt;...

Перегрузка операторов << и >>, загрузка элементов в структуру из последовательного потока - C++
Добрый день. Для своего класса нужно загрузить элементы в структуру данных из последовательного потока. Написал перегрузку операторов: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.04.2011, 13:39 #2
Вынеси перегрузку оператора >> за пределы определения класса, вот так:
C++
1
2
3
4
5
6
7
        istream& operator >> (istream &inp, rectangle &r1)
        {
        cout<<"First size is ";
        inp>>*(r1.a);
        cout<<"Second size is ";
        inp>>(*r1.b);
        }
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,020
10.04.2011, 14:28  [ТС] #3
Не помагает.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.04.2011, 14:34 #4
Давай код сюда и номер строки в которой ошибка.
the_crow
последний из ворон
111 / 111 / 40
Регистрация: 02.02.2011
Сообщений: 334
10.04.2011, 14:43 #5
Думаю как-то так:
C++
1
2
3
4
5
6
7
ostream& operator>>(istream & istr,rectangle &r) {
cout<<"First size is ";
  istr>>r.a;
cout<<"Second size is ";
  istr>>r.b;
return istr;
    }
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,020
10.04.2011, 14:54  [ТС] #6
Цитата Сообщение от kravam Посмотреть сообщение
Давай код сюда и номер строки в которой ошибка.
Код в первом блоке
Ошибка в 29 строке
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.04.2011, 15:00 #7
the_crow, здесь
C++
1
istr>>r.a;
r.a адрес переменной типа int, наджо его разыменовывать и не r, а r1
Короче я написал как исправить код если исправленый код мне никто не даст (у меня комплится, кстати), тогда я не знаю, чё делать.
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,020
10.04.2011, 15:17  [ТС] #8
Цитата Сообщение от kravam Посмотреть сообщение
(у меня комплится, кстати
У тебя какой компилятор? У меня вижуал, но он часто тупит, хотя на Дев тоже ошибки

Добавлено через 1 минуту
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
class rectangle
{
    int *a;
    int *b;
    
    friend ostream& operator << (ostream &outp, rectangle &r); 
    friend rectangle &operator -(rectangle &r);
    friend bool operator +(rectangle &r, rectangle &r1);
public:
    
    rectangle();
    ~rectangle();
 
    rectangle & operator !()
    {
        if ((*a)!=(*b))
            cout<<"First rectange is not squery";
        else
            cout<<"`First rectange is squery";
        return *this;
    };
 
friend istream& operator >> (istream &inp, rectangle &r1); //переопределениезнака>>
    istream& operator >> (istream &inp, rectangle &r1)
    {
    cout<<"First size is ";
    inp>>r1.a;
    cout<<"Second size is ";
    inp>>r1.b;
    return istr;
    }
Так надо?
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.04.2011, 15:21 #9
Dev C++ компилит
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class rectangle
{
        int *a;
        int *b;
        friend istream& operator >> (istream &inp, rectangle &r);  //ïåðåîïðåäåëåГ*ГЁГҐГ§Г*Г*ГЄГ*>>
        friend ostream& operator << (ostream &outp, rectangle &r); 
        friend rectangle &operator -(rectangle &r);
        friend bool operator +(rectangle &r, rectangle &r1);
public:
        
        rectangle();
        ~rectangle();
 
        rectangle & operator !()
        {
                if ((*a)!=(*b))
                        cout<<"First rectange is not squery";
                else
                        cout<<"`First rectange is squery";
                return *this;
        };
 
        
        bool operator == (rectangle &r)
        {
                int s1, s2;
                s1=(*a)*(*b);
                s2=(*r.a)*(*r.b);
                if(s1==s2)
                        return 1;
                else
                        return 0;
        }
        
};
 
        istream& operator >> (istream &inp, rectangle &r1)
        {
        cout<<"First size is ";
        inp>>*r1.a;
        cout<<"Second size is ";
        inp>>*r1.b;
        }
 
 
rectangle::rectangle()
{
        a=new int;
        b=new int;
}
 
 
 
 
rectangle::~rectangle()
{
        delete a;
        delete b;
}
 
rectangle &operator -(rectangle &r)
{
        int c;
        c=abs((*r.a)-(*r.b));
        cout<<"\nRaznica between sizes is  "<<c<<" sm\n";
return r;
}
 
bool operator +(rectangle &r, rectangle &r1)
{
        int S, s1, s2;
        s1=(*r.a)*(*r.b);
        s2=(*r1.a)*(*r1.b);
        S=s1+s2;
        cout<<"\n"<<"Summa of the areas of two rectangles is "<<S;
        return 0;
}
 
 
int main()
{
        bool f;
        cout<<"Creation a fist rectangle:\n";
        rectangle rect;
//        operator >>(istream &inp, rect)
        rect.operator !();
        operator -(rect);
        cout<<"\nCreation a new rectangle:\n";
        rectangle rect1;
        
        f=rect.operator ==(rect1);
        if (f)
        {
                cout<<"\nAreas of rectangles is equal";
        }
        else
                cout<<"\nAreas of rectangles is difference";
        
                operator +(rect, rect1);
 
_getch();
}
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,020
10.04.2011, 15:56  [ТС] #10
Перегрузка потока ввода
У тебя токого нет?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.04.2011, 15:58 #11
marina2, А проект то у вас консольный создан?
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
10.04.2011, 16:17 #12
Цитата Сообщение от marina2 Посмотреть сообщение
У тебя токого нет?
нет, а когда появляется (не в твоём случае), значит линковщик не может найти функцию winmain

В таких случаях я просто пишу
C++
1
2
3
int main () {
 return 0;
}
И всё. А у тебя она уже есть. Видать, что-то я не так делаю...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2011, 16:17
Привет! Вот еще темы с ответами:

Перегрузка ввода - C++
Нужно реализовать перегрузку ввода для этой программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

Перегрузка ввода - C++
Вроде делал всё правильно, перегрузка вывода работает, делал аналогично и ввода, компилируется нормально но выводит вот это: ...

перегрузка ввода - C++
class LONG { int a; public: friend istream&amp; operator &gt;&gt;(istream&amp; input, LONG&amp; m); }; istream&amp; operator &gt;&gt; (istream&amp; input,...

Перегрузка вывода и ввода - C++
Здравствуйте прошу помочь ,написал программу в ней нужно перегрузить вывод и ввод ,как это можно осуществить??пробовал перегружать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.04.2011, 16:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru