我需要帮助比较一个类的值,但bool方法不是worker。我认为我的逻辑是正确的,代码是错误的。 这是方法,有三个:
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 :(得分: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;。