【发布时间】:2012-11-28 01:35:01
【问题描述】:
我有以下等号运算符:
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...,它会在"." 下添加一条红线,并说:'错误:指向绑定函数的指针只能用于调用函数。
任何建议将不胜感激。谢谢。
【问题讨论】:
-
第二个版本是正确的,它应该可以工作。你能在 ideone.com 上发布一个最小的例子吗?
-
错误信息是因为如果
getHours是一个方法,你必须有x.getHours()。 -
它现在与
x.getHours()一起工作我错过了()。我没有意识到他们是必需的。我是一个新手,从一本似乎没有提到这一点的书中自学。感谢您的时间@LuchianGrigore -
@qwertyRocker 请注意,
()是“函数调用”运算符,是调用函数所必需的。唯一不需要的是将函数的值存储在指针中时 (durFunc = Duration::getHours;)。因此,每当您需要调用(执行、运行、执行,无论您想查看它)一个函数时,请确保包含()函数运算符。 -
@izuriel 好的,这是一个很好的解释,非常感谢。我很高兴我问了这个问题。现在一切都清楚多了。再次感谢:D
标签: c++ equals-operator