时间类比较

时间:2012-12-16 16:24:27

标签: c++

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

有人可以告诉我这些操作员有什么不对。他们正在比较小时和分钟的时间。但是我没有得到正确的比较。我已经定义了一类时间,其中存储了小时和分钟。

1 个答案:

答案 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