2013-04-30 7 views
-2

안녕하세요 저는 Java 기초에 대한 지식이 있지만 C++을 처음 접했습니다.연산자 출력 오버로드

나는이 연산자 < <이 : 기본적으로 내가 뭘하려고 오전입니다

std::ostream& operator<<(std::ostream& out, Rational& r) { 
    int a; 
    int b; 
    int c; 
    int d; 

    b = r.n_; 
    c = r.d_; 
    if (c >= b) { 
     a = (b/c); 
     d = (b % c); 

     r.n_ = d;} 


    return out << r.n_ << '/' << r.d_; 
    } 

을; 출력하고자하는 부분이 부적절한 부분이라면 출력하기 전에 혼합 된 숫자 형식으로 변환 할 수 있기를 원합니다. 나는 혼합 된 수를 계산하기 위해 if 문을 작성했지만 두 개의 매개 변수 만 취할 수 있으므로 < < 연산자를 사용하여 출력하는 방법을 알아내는 데 문제가 있습니다. 그것을 할 수있는 방법이 있다면 (클래스 인스턴스 변수를 편집하지 않고).

어떤 도움이나 아이디어가 크게 감사합니다, 사전에 감사합니다 (합리적인 클래스는 두 개의 인스턴스 변수 분자와 분모를 가지고). ^^

미리 감사드립니다.

+1

만약 당신이'if (c <= b)'를 원한다고 생각합니까? –

+5

나는이 질문을 정말로 이해하지 못하지만, 두 번째 피연산자를 수정하는 출력 스트림 연산자를 갖는 것이 직관력이없는 것으로 보인다. – juanchopanza

+0

컴퓨터에 그러한 것이 없으므로 혼합 분수를 출력 할 수 없습니다. 당신은 그것들을 마치 C++에서의 지루하고 시각적 인 외관처럼 보일 수 있습니다. –

답변

3

나는 '<< 연산자는 두 개의 매개 변수 만 취할 수 있습니다.'라는 것이 무슨 뜻인지 정말로 이해하지 못합니다. 매우 간단 보인다

std::ostream& operator<<(std::ostream& out, Rational& r) 
{ 
    if (r.n_ > r.d_) 
    { 
     int whole = r.n_/r.d_; 
     int numerator = r.n_ % r.d_; 
     return out << whole << ' ' << numerator << '/' << r.d_; 
    } 

    return out << r.n_ << '/' << r.d_; 
} 

, 내가 생각 : 당신이 그런 짓을하려고 한 것 같습니다. 너의 질문에 대해 뭔가 빠진 것일까?

+0

아니야. 그것이 내가 원하는 것입니다. 분명히, 나는 스스로를 위해 필요한 것보다 더 어려운 일을 만듭니다. 고마워, 고마워. – user2333446

+0

문제 없습니다. 도와 드리겠습니다. 나는 당신의 질문을 올바르게 읽었는지 확실하지 않았습니다. –