В C++, как функции перегрузки оператора отличаются для унарных и двоичных операторов-минусов?Как перегрузить как унарные, так и двоичные операторы минус в C++?
Я пытаюсь перегружать как с помощью следующего кода:
Vector Vector::operator-(){
return Vector(-x,-y,-z);
}
Vector Vector::operator-(const Vector& v){
return this* + (-v);
}
Но это извергает много ошибок:
vector.cpp: In member function ‘Vector Vector::operator-(const Vector&)’:
vector.cpp:88:20: error: passing ‘const Vector’ as ‘this’ argument of ‘Vector Vector::operator-()’ discards qualifiers [-fpermissive]
return this* + (-v);
^
vector.cpp:88:16: error: no match for ‘operator+’ (operand type is ‘Vector’)
return this* + (-v);
^
vector.cpp:88:16: note: candidates are:
vector.cpp:70:8: note: Vector Vector::operator+(const Vector&)
Vector Vector::operator+(const Vector& v){
^
...
Как исправить эту проблему?
Внедрение в качестве свободной функции, а не функция член. Или (если вы настаиваете на реализации как функции-члена) пометьте его как функцию 'const', то есть' Vector Vector :: operator- (const Vector &) const; 'и Vector Vector :: operator-() const;' – Andrew