C++ 等于运算符

标签 c++ equals-operator

我有以下等号运算符:

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

我的程序不断输出“broken”,这表明 dTest0 和 dTest1 实际上是相等的...我哪里出错了?

附加:如果我使用 x.getHours == y.getHours... 它会在 "." 下方放置一条红线并显示:'错误:a指向绑定(bind)函数的指针只能用于调用函数。

如有任何建议,我们将不胜感激。谢谢。

最佳答案

只有当 x.secs == y.secs 时,第一个实现才会返回 true。前两次比较的结果将被丢弃。 , 运算符计算其第二个操作数的值,在本例中归结为 x.secs == y.secs

然而,第二个是正确的。如果它不起作用,那么您一定是在 Duration 的构造函数中错误地设置了 hrsminssecs 的值

getHours 的问题是您需要调用它。它毕竟是一个成员函数。所以 x.getHours() 而不是 x.getHours

关于C++ 等于运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804332/

相关文章:

php - 是否有令人信服的理由在比较运算中使用 PHP 的运算符 ===,而不是 ==?

c++ - 使用筛法进行素因数分解

c++ - 将回调与类成员函数一起使用时出现问题

java - 不确定如何完成这个 equals 方法

javascript - 在 if(window.location == 'x' ) 中将 == 更改为 === 会导致 block 不执行

java - 为什么我在java中的 boolean 测试总是失败?

c++ - 错误 : Could not resolve SDK path for 'macosx10.8'

C++ "Access violation reading location"错误

c++ - 将 'override' 用于已使用 'typedef' 声明的函数

mysql - 是否有理由不在mysql中使用<=>(空安全等于运算符)而不是=?