0

我有以下等于运算符:

  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...它在下面放一条红线"."并说:“错误:指向绑定函数的指针只能用于调用函数”。

任何意见,将不胜感激。谢谢。

4

2 回答 2

7

第一个实现仅在x.secs == y.secs. 前两次比较的结果将被丢弃。运算符计算其,第二个操作数的值,在这种情况下归结为 just x.secs == y.secs

然而,第二个是正确的。如果它不起作用,那么您必须在 的构造函数中错误地设置hrsmins和的值。secsDuration

您遇到的问题getHours是您需要调用它。毕竟是成员函数。所以x.getHours()代替x.getHours.

于 2012-12-10T15:57:25.103 回答
6

第一个是错误的。 ,不能那样工作。

第二个是正确的,假设Duration是合理的。

您的Duration构造函数中可能存在错误。我什至认为很有可能。

于 2012-12-10T15:53:10.953 回答