2014-12-05 3 views
-1

클래스 값을 비교하는 데 도움이 필요하지만 bool 메서드는 작업자가 아닙니다. 내 논리가 올바른 코드가 잘못되었다고 생각합니다.클래스 방법 비교 문제

fullcode

bool piggybank::isLessthan(piggybank p2) 
    { 

if(printPiggyBankValue() < p2.printPiggyBankValue()) 
    return true; 
else 
    return false; 

} 

bool piggybank::isGreaterthan(piggybank p2) 

{ 
if(printPiggyBankValue() > p2.printPiggyBankValue()) 
    return true; 
else 
    return false; 
} 


piggybank piggybank::sumPiggyBanks(piggybank p2) 
{ 
return PiggyBank(penny_num+p2.penny_num, nickel_num+p2.nickel_num, dime_num+p2.dime_num, quarter_num+p2.quarter_num); 
} 

void piggybank::printPiggyBankValue() 
{ 
    double sum = 0; 
    sum = (penny_num * penny) + (nickel_num * nickel) + (dime_num * dime) + (quarter_num * quarter); 
    cout << "$" << sum; 
} 
+0

무엇이 작동하지 않습니까? – 0x499602D2

+1

이 질문에 게시 한 코드의 논리가 좋습니다. 누군가가 결국 당신에게 당신의'if (x) return true; else false; return'; return x;와 같습니다. –

+0

(cout) 문자열을 비교하고 있습니까? 값을 얻으려고 시도하십시오 (double) – corn3lius

답변

0

당신이 당신의 비교 방법에서 이러한 기능을 사용하는 이유를 이해하지 않습니다 여기에 방법입니다, 세 사람이있다.
직접 데이터 멤버를 비교해야한다 : 위의 예에서

class piggyBank 
{ 
    public: 
    bool operator<(const piggybank& p) 
    { 
    unsigned int this_sum = penny_num 
     + nickel_num * 5; 
     + dime_num * 10; 
     + quarter_num * 25; 
    unsigned int p_sum = p.penny_num 
     + p.nickel_num * 5; 
     + p.dime_num * 10; 
     + p.quarter_num * 25; 
    return this_sum < p_sum; 
    } 
}; 

을, 나는 를 들어, 동전의 단위로 통화를 요약하고 다른 개체 페이지.
그런 다음 합계 (또는 합계)를 비교하여 그 결과를 반환합니다.

또한 operator<이라는 이름을 지정하여 <을 사용하여 인스턴스를 비교할 수 있습니다. :-)
"isLessThan"을 호출 할 필요가 없습니다.