我有以下等于运算符:
bool operator==(const Duration& x, const Duration& y){
return ( x.hrs == y.hrs, x.mins == y.mins, x.secs == y.secs );
}
我也尝试过:
bool operator==(const Duration& x, const Duration& y){
return ( (x.hrs == y.hrs) && (x.mins == y.mins) && (x.secs == y.secs) );
}
在我的主要方法中,我有:
//Arbitrary Durations - Testing
Duration dTest0 (01,45,12);
Duration dTest1 (01,35,45);
Duration dTest2 (01,35,45);
Duration dTest3 (01,25,05);
if ( dTest0 == dTest1 ){
cout<< "broken" << endl;
}
else{
cout<< "working" << endl;
}
我的程序一直输出“破损”,这表明dTest0和dTest1实际上是相等的......我哪里出错?
附加:如果我使用x.getHours == y.getHours...
它会在"."
下面加一条红线并说:'错误:指向绑定函数的指针只能用于调用函数`。
任何建议都将不胜感激。感谢。
答案 0 :(得分:7)
第一个实现仅在x.secs == y.secs
时返回true。前两次比较的结果将被丢弃。 ,
运算符计算其第二个操作数的值,在这种情况下归结为x.secs == y.secs
。
然而,第二个是正确的。如果它不起作用,那么您必须在hrs
的构造函数中错误地设置mins
,secs
和Duration
的值。
getHours
存在的问题是您需要调用它。毕竟它是一个成员函数。因此x.getHours()
代替x.getHours
。
答案 1 :(得分:6)
第一个是错的。 ,
不起作用。
第二个是正确的,假设Duration
是合理的。
您的Duration
构造函数中可能存在错误。我甚至认为这很可能。