Почему cout не работает в функции друга, которая перегружает оператор <<, который является оператором istream - PullRequest
0 голосов
/ 14 февраля 2019

Почему cout не работает внутри функции, которая перегружает оператор istream в C ++ (>>)? Что я должен сделать, чтобы он заработал?

В строке: cout >> "Enter x and y: " показываетошибка?

Почему?
Как я могу это исправить?

Это код overload >> и operator <<

#include<iostream>

using namespace std;

class myClass
{
    int x,y;
public:
    myClass(int a,int b)
    {
        x=a;y=b;
    }
    friend istream &operator>>(istream &in, myClass &ob);
    friend ostream &operator<<(ostream &out, myClass ob);
};
istream &operator>>(istream &in,myClass &ob)
{
    cout >> "Enter x and y: ";
    in >> ob.x;
    in >> ob.y;
    return in;
}
ostream &operator<<(ostream &out,myClass ob)
{
    out << ob.x << " " << ob.y << endl;
}
int main()
{
    myClass ob(10,20);
    cout << ob;
    cin >> ob;
    cout << ob;
}

1 Ответ

0 голосов
/ 14 февраля 2019

Ваша ошибка заключается в том, что вы смешиваете << и >>, cout>>"Enter x and y: "; должно быть cout << "Enter x and y: ";

Кроме того, неправильно предлагать пользователю ввести перегруженную operator>>.Что если ваш >> использовался для чтения из файла?Вы не хотели бы предлагать пользователю тогда.Поэтому переместите cout<<"Enter x and y: "; в основную функцию, к которой она относится.

Вот так

istream &operator>>(istream &in,myClass &ob)
{
    in>>ob.x;
    in>>ob.y;
    return in;
}

int main()
{
    myClass ob(10,20);
    cout<<ob;
    cout<<"Enter x and y: ";
    cin>>ob;
    cout<<ob;
    return 0;
}
...