Вызов перегруженного оператора == в другой функции, которая проверяет! = - PullRequest
2 голосов
/ 27 февраля 2012

Я пытаюсь написать оператор != функцию, которая сравнивает, если два комплексных числа совпадают.Я написал функцию, равную ==, которая работает хорошо, но я пытаюсь использовать отрицание результата.

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

Ответы [ 3 ]

6 голосов
/ 27 февраля 2012

return !(this==(a)); сравнивает ComplexNumber* с ComplexNumber.Измените на:

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

Также добавлен const квалификатор для функции и аргумента (который я изменил на ссылку, чтобы избежать ненужного копирования).Вам нужно будет добавить квалификатор const к bool ComplexNumber::operator ==(), если его еще нет.

3 голосов
/ 27 февраля 2012
bool ComplexNumber::operator !=(const ComplexNumber &a) const {
    return !operator==(a);
}
3 голосов
/ 27 февраля 2012

Пожалуйста, перепишите ваш пост как вопрос.

Я думаю, вопрос в том, почему это не работает.Ваша проблема в том, что this - это указатель на объект, а a - это объект.

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

решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...