2014-12-05 39 views
-1

我需要比較類的值的幫助,但bool方法不是worker。我認爲我的邏輯是正確的,代碼是錯誤的。 這裏的方法,有三個一:比較類方法的問題

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 2014-12-05 01:05:10

+1

你在這個問題中發佈的代碼的邏輯很好。儘管有人最終會告訴你,你的if(x)返回true;否則返回false;'和'return x;'相同 – 2014-12-05 01:05:29

+0

您正在比較(cout)字符串嗎?嘗試獲取值(雙倍) – corn3lius 2014-12-05 01:08:07

回答

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; 
    } 
}; 

在上述例子中,我在便士爲單位總結了貨幣,這和另一對象p
然後我比較總和(或總數)並返回結果。我可以使用<來比較實例。 :-)
無需調用「isLessThan」。