我正在尝试编写一个运算符!=
函数,用于比较两个复数是否相同。我已经写了一个等于==
函数的函数,它运行良好,但我试图用结果否定。
bool ComplexNumber::operator !=(ComplexNumber a) {
return !(this==(a)); //the == has been overloaded
}
答案 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);
}