И снова здравствуйте.
При попытке перегрузить бинарный оператор + возник ряд проблем и вопросов:
1) Заявить перегрузку оператора не получается вне пределов области public в .h файле, пишет что функция член не может быть объявлена вне соответствующего класса, несмотря на то что при работе с классом complex это было возможно. Пробовал обоими способами из нижеописанных.
2) В чём различие между заявлениями о перегрузке оператора ( не только в .h файле)?:
Код:
Poly operator + (const Poly &p1, const Poly &p2)
Poly & Poly::operator +(const Poly &p1, const Poly &p2);
В обоих случаях в .h файле компилятор утверждает, что "Слишком много параметров для этой функции оператора".
В .cpp файле класса
Код:
Poly operator + (const Poly &p1, const Poly &p2)
Не вызывает у компилятора никакой негативной реакции
При использовании
Код:
Poly & Poly::operator +(const Poly &p1, const Poly &p2);
Компилятор утверждает, что "class "Poly" не содержит члена "operator+"", но я подозреваю что это из - за операции расширения области видимости (::).
Что я сделал неправильно в данном случае?
P.S.
К перегруженному оператору =, реализованному нижеописанным образом у компилятора вопросов не возникает.
В .h в public
Код:
Poly & Poly::operator = (const Poly &p1);
В .cpp
Код:
Poly & Poly::operator = (const Poly &p1)
{
return Poly(this->c0 = p1.c0);
}