diff --git a/main.cpp b/main.cpp index 2ea242e..f4244d4 100644 --- a/main.cpp +++ b/main.cpp @@ -8,5 +8,13 @@ int main() cout << Position(2, 5) << endl; cout << Position(-1, 9) << endl; cout << Position(0, 0) << endl; + + cout << Position(0, 0) + Position(1, 6) << endl; + auto p1 = Position(8, 8); + auto p2 = Position(4, 1); + cout << p1 << endl; + p1 += p2; + cout << p1 << endl; + return 0; } diff --git a/position/Position.cpp b/position/Position.cpp index 8cc8e22..ec67e4d 100644 --- a/position/Position.cpp +++ b/position/Position.cpp @@ -15,3 +15,16 @@ std::ostream &operator<<(ostream &os, const Position &pos) os << "⁅ " << pos.m_x_pos << " ; " << pos.m_y_pos << " ⁆"; return os; } + +Position &Position::operator+=(const Position &rhs) +{ + this->m_x_pos += rhs.m_x_pos; + this->m_y_pos += rhs.m_y_pos; + return *this; +} + +Position operator+(Position lhs, const Position &rhs) +{ + lhs += rhs; + return lhs; +} diff --git a/position/Position.h b/position/Position.h index 3219e2d..c6e8c17 100644 --- a/position/Position.h +++ b/position/Position.h @@ -14,6 +14,8 @@ private: int m_x_pos, m_y_pos; public: explicit Position(int x_pos, int y_pos); + Position& operator+=(const Position& rhs); + friend Position operator+(Position lhs, const Position& rhs); friend std::ostream& operator<<(std::ostream& os, const Position& pos); };