bool operator < (Time obj_a, Time obj_b)
{
return ((obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes) &&
(obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes));
}
bool operator > (Time obj_a, Time obj_b)
{
return (obj_a.hours>=obj_b.hours || obj_a.minutes>=obj_b.minutes);
}
bool operator == (Time obj_a, Time obj_b)
{
return (obj_a.hours==obj_b.hours && obj_a.minutes==obj_b.minutes);
}
有人可以告诉我这些操作员有什么不对。他们正在比较小时和分钟的时间。但是我没有得到正确的比较。我已经定义了一类时间,其中存储了小时和分钟。
答案 0 :(得分:2)
这段代码有很多问题。首先,您要将<
与<=
比较进行比较,这些比较(如果其余逻辑是正确的)将意味着相等的时间将比较<
或{{1} },取决于比较例程的参数顺序。
然后,
>
在((obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes) &&
(obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes))
中执行两次完全相同的比较,所以它实际上只是
&&
这不起作用,因为它希望 小时,或分钟为obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes
。这意味着<=
&lt; = 11:30
因为10:40
。
解决这个问题的最简单方法是减少对时间对象的比较,以便仅在几分钟内进行比较,例如
30 <= 40