2017-11-16 16 views
-3

c++에이 연산자에 과부하가 걸린 프로그램이 있습니다. >>. 이 연산자는 텍스트 입력을 요구합니다. cin >> 내 질문은이 동일한 연산자를 사용해야하지만 ifstream 항목 인 경우 어떻게해야합니까? 나도 같은 연산자를 사용하지만, 내가 할 필요가 무엇 ifstream >> variable 같은 다른 사용에 필요한 경우 연산자 과부하 정보

코드

istream & operator >> (istream & Read, Person & ObjPers) { 
     cout << "\ n \ n Enter name of Person:"; 
     Lee >> ObjPers.NomPers; 
     cout << "\ n \ n Enter year of birth:"; 
     Read >> ObjPers.AnioNac; 
     cout << "\ n \ nEnter place of birth:"; 
     Read >> ObjPers.LugNac; 
     cout << "\ n \ nIs it alive ?:"; 
     Read >> ObjPers.Vive; 
     return Read; 
} 

로 편집?

EDIT2 : 나는 ostream에 < <를 오버로드 할 때

이런 일이 발생 :

ostream & operator << (ostream & Write, Persona & ObjPers) { 
    Write << "\ n \ nData of the Person \ n"; 
    Type << "\ nName:" << ObjPers.NomPers; 
    Write << "\ nPlace of birth:" << ObjPers.LugNac; 
    Write << "\ nYear of birth:" << ObjPers.AnioNac; 
    if (ObjPers.live == 1) 
    Write << "\ nIt is alive. \ N"; 
    else 
    Write << "\ nNot alive. \ N"; 
         return Write; 

    } 

을 내가 < < 연산자 ofstream 사용하려고하면 내가 오버로드 된 연산자가 먼저

void BinaryTree <T> :: Save (NodeTree <T> * p, ofstream & out) 
{ 
     if (p) { 

        Save (p-> Sonleft, out); 
         exit << p-> Info; 

        Save (p-> SonRigth, out); 

     } 
     cout << endl; 

} 
를 실행 할 수 없습니다
+0

이의이 코드를 보자. – PaulMcKenzie

+0

보통 아무것도 없습니다. 스트림은 스트림입니다. – user4581301

+0

코드가있는 게시물을 편집합니다 –

답변

0

operator>> 함수를 구현하면

  1. 구현시 std::cin 또는 std::cout을 사용하지 마십시오.
  2. 사용자가 그러한 개체에 대해 무엇을 입력해야하는지 알고 있다고 가정합니다.
  3. istream에 정규화 된 이름을 사용하십시오. std::istream& Read insted는 istream& Read입니다. 함수에 대한

나의 제안 :

std::istream& operator>>(std::istream& in, Person & ObjPers) { 
    in >> ObjPers.NomPers; 
    in >> ObjPers.AnioNac; 
    in >> ObjPers.LugNac; 
    in >> ObjPers.Vive; 
    return in; 
} 

또는 하나에 문을 결합 :

std::istream& operator>>(std::istream& in, Person & ObjPers) { 
    return (in >> ObjPers.NomPers 
       >> ObjPers.AnioNac 
       >> ObjPers.LugNac 
       >> ObjPers.Vive); 
} 
+0

문제는 ifstream을 동일한 연산자 >>로 사용하려고 할 때 과부하가 실행된다는 것입니다. –

+0

@MarcoLeslie, 당신은 그것이 단점처럼 들리도록 만듭니다. 저의 견해로 볼 때 그것은 예상되고 좋은 것입니다. –

+0

과부하 –