Перегружаю бинарный + в своем классе:
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;
}
В классе он должен перегружаться с одним аргументом. Второй аргумент - объект самого класса.
Если вы создаете его как свободную функцию (вне класса) - все верно, именно такая сигнатура и должна быть.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могли бы вы мне подсказать как написать код для умножения двух двоичных чисел? Нужно именно их умножить, поэтому через перевод в 10 сс не получится
У меня есть класс "Матрица"И в нём нужно перегрузить оператор [] так, дабы при обращении [][] к элементам имело смысл, аналогично встроенному
Каким образом настроить компиляцию на удаленной машине java-приложения ? В netbeans все достаточно просто и работает безотказно, а вот в intellij idea никак...