重複としてフラグを立てる前に読んでください
実部 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 がプライベートであるためアクセスできないことです。通常のフレンド関数はプライベート変数にアクセスできません。>>のみで失敗するのはなぜですか?
注: << 演算子は正常に機能します。>>のみ失敗します