比较类方法的问题

时间:2014-12-05 01:02:43

标签: c++

我需要帮助比较一个类的值,但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;
}

1 个答案:

答案 0 :(得分: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;
  }
};  

在上面的例子中,我总结了以便士为单位的货币, this 和另一个对象 p 。 然后我比较总和(或总数)并返回该结果。

此外,通过命名方法operator<,我可以使用<来比较实例。 :-)
无需致电&#34; isLessThan&#34;。