Перегрузка оператора "+="
уважаемые форумчане. Подскажите пожалуйста ищущему путь новичку. Пытаюсь выполнить перегрузку += с помощью метода класса. Создал класс Point
{
private:
int m_x;
int m_y;
public:
Point();
Point(int x, int y);
friend Point operator += (Point& obj1, Point& obj2);
friend Point operator += (Point& obj1, int x);
};
Реализацию его методов
Point::Point()
{
m_x = 0;
m_y = 0;
}
Point::Point(int x, int y)
{
this->m_x = x;
this->m_y = y;
}
Point operator += (Point& obj1, Point &obj2)
{
int tmp_x = obj1.m_x+obj2.m_x;
int tmp_y = obj1.m_y + obj2.m_y;
return Point(tmp_x, tmp_y);
}
Point operator += (Point &obj1, int x)
{
int tmp_x = obj1.m_x + x;
int tmp_y = obj1.m_y + x;
return Point(tmp_x, tmp_y);
}
Для проверки выполняю
Point pt1(1,1);
Point pt2(2,2);
pt2+=pt1;
pt2+=1;
Point pt3(3,3);
pt2 += pt1 += pt3;
stop
И вот в этой строке возникает ошибка - E0349 отсутствует оператор "+=", соответствующий этим операндам(типы операндов Point += Point):
pt2 += pt1 += pt3;
Учитывая, что += бинарная правоассоциативная операция. Предположил, что возвращается новый объект, в следствие чего не происходит дальнейшая перегрузка Пробовал внутри класса реализовать при помощи возврата *this, однако это так же не помогло. Подскажите пожалуйста куда меня заводит криворукость? Заранее благодарен за помощь