我有以下等于运算符:

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

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

最佳答案

如果x.secs == y.secs,则第一个实现将仅返回true。前两个比较的结果将被丢弃。 ,运算符求值为其第二个操作数的值,在这种情况下,它可以简化为x.secs == y.secs

但是,第二个是正确的。如果它不起作用,则必须在hrs的构造函数中错误地设置minssecsDuration的值。

getHours的问题是您需要调用它。毕竟它是成员函数。因此,用x.getHours()代替x.getHours

10-07 20:20