Перегружаю бинарный + в своем классе:
MyClass operator+(const MyClass &a, const MyClass &b) {
...
return a.value + b.value;
}
Получаю ошибку бинарный оператор + имеет слишком много параметров. В чем проблема? Везде указывается именно такая сигнатура перегрузки этого оператора.
Ответ
Каждая не статическая функция-член класса имеет неявный параметр, который получает значение this, то есть указатель на сам объект класса.
Вам надо либо этот оператор определить в классе как дружественную функцию (если требуется обращение к закрытым или защищенным членам класса), например
friend MyClass operator+(const MyClass &a, const MyClass &b) {
...
return a.value + b.value;
}
Или объявить ее как обычную функцию вне класса, если не требуется обращение к закрытым или защищенным членам класса.
Либо сделать оператор функцией-членом класса, но с одним явным параметром
MyClass operator+( const MyClass &b) const {
...
return this->value + b.value;
}
Комментариев нет:
Отправить комментарий