0

重複としてフラグを立てる前に読んでください

実部 r と虚部 i を持つ複素数を読み取るために、演算子 >> と << をオーバーロードしています。

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class complex
{
    int r,i;
public:
complex()
{ i=r=0;}
friend istream& operator>>(istream&, complex&);
friend ostream& operator<<(ostream&,complex&);
};
istream& operator>>(ifstream &din, complex &x)
{
    din>>x.r;
    din>>x.i;
    return din;
}
ostream& operator<<(ostream &dout, complex &x)
{
dout<<x.r<<x.i;
return dout;
}
void main()
{
clrscr();
complex x;
cin>>x;
cout<<x;

}

エラーは、コード部分で r と i にアクセスできないことです

din>>x.r; din>>x.i;

エラーは、r と i がプライベートであるためアクセスできないことです。通常のフレンド関数はプライベート変数にアクセスできません。>>のみで失敗するのはなぜですか?

注: << 演算子は正常に機能します。>>のみ失敗します

4

1 に答える 1