在另一个检查!=的函数中调用一个重载的==运算符

时间:2012-02-27 12:16:55

标签: c++ operator-overloading

我正在尝试编写一个运算符!=函数,用于比较两个复数是否相同。我已经写了一个等于==函数的函数,它运行良好,但我试图用结果否定。

bool ComplexNumber::operator !=(ComplexNumber a) {
    return !(this==(a));  //the == has been overloaded
}

3 个答案:

答案 0 :(得分:6)

return !(this==(a));正在将ComplexNumber*ComplexNumber进行比较。改为:

bool ComplexNumber::operator !=(const ComplexNumber& a) const {
    return !(*this == a);  //the == has been overloaded
}

还为函数和参数添加了const限定符(我将其更改为引用以避免不必要的复制)。如果const限定符不存在,则需要将bool ComplexNumber::operator ==()限定符添加到{{1}}。

答案 1 :(得分:3)

请将您的帖子重写为问题。

我想问题是:为什么这不起作用。您遇到的问题是this是指向对象的指针,而a是一个对象。

bool ComplexNumber::operator !=(ComplexNumber a){
    return !(*this==(a));  //the == has been overloaded
}

将解决您的问题。

答案 2 :(得分:3)

bool ComplexNumber::operator !=(const ComplexNumber &a) const {
    return !operator==(a);
}