2014-12-05 37 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”。