0

실수 부 R과 허수 부분 난 복잡한 숫자를 읽기 위해 중복연산자 오버로딩 >> 및 개인 회원

내가 연산자를 오버로딩하고 >> 및 < <로 신고하기 전에 읽어 마십시오;

#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 내가 코드 부분

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

오류가 R입니다 액세스 할 수 없습니다 그리고 난 사립 정상 친구 기능을 할 수 있도록 액세스 할 수 없습니다 아닌가요 개인 변수에 액세스합니다. >>가 왜 실패하나요?

참고 : < < 연산자가 정상적으로 작동합니다. 단 >>

+0

이런 식으로 수업을 설계하지 마십시오. 너무 혼란 스러울 것입니다. – Bathsheba

+0

'iostream.h'는 표준 헤더가 아닙니다. 'iostream'을 사용하십시오. 표준 C++ 헤더에는 확장자가 없습니다. 'void main' 역시 법적 서명이 아닙니다. 'int main'을 사용하십시오. – chris

답변

6

operator>>의 친구 선언이 istream 인수를 실패하지만 구현은 완전히 다른 (및 비 friend) 기능하게 ifstream 인수 걸린다. 추가 f을 제거하면 제대로 작동합니다.