From 31170037440e2dd3218bff00e6fed249707d15a7 Mon Sep 17 00:00:00 2001 From: "alexis.drai" Date: Fri, 3 Feb 2023 11:31:02 +0100 Subject: [PATCH] :sparkles: override ==, != --- main.cpp | 8 ++++++++ position/Position.cpp | 15 +++++++++++++-- position/Position.h | 13 ++++++++++--- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index f4244d4..70af182 100644 --- a/main.cpp +++ b/main.cpp @@ -16,5 +16,13 @@ int main() p1 += p2; cout << p1 << endl; + cout << (p1 == p2) << endl; + cout << (p1 != p2) << endl; + + p1 = Position(4, 1); + + cout << (p1 == p2) << endl; + cout << (p1 != p2) << endl; + return 0; } diff --git a/position/Position.cpp b/position/Position.cpp index ec67e4d..62a64c9 100644 --- a/position/Position.cpp +++ b/position/Position.cpp @@ -18,8 +18,8 @@ std::ostream &operator<<(ostream &os, const Position &pos) Position &Position::operator+=(const Position &rhs) { - this->m_x_pos += rhs.m_x_pos; - this->m_y_pos += rhs.m_y_pos; + m_x_pos += rhs.m_x_pos; + m_y_pos += rhs.m_y_pos; return *this; } @@ -28,3 +28,14 @@ Position operator+(Position lhs, const Position &rhs) lhs += rhs; return lhs; } + +bool Position::operator==(const Position &rhs) const +{ + return m_x_pos == rhs.m_x_pos + && m_y_pos == rhs.m_y_pos; +} + +bool Position::operator!=(const Position &rhs) const +{ + return !(*this == rhs); +} diff --git a/position/Position.h b/position/Position.h index c6e8c17..50c8209 100644 --- a/position/Position.h +++ b/position/Position.h @@ -14,9 +14,16 @@ 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); + + bool operator==(const Position &rhs) const; + + bool operator!=(const Position &rhs) const; + + Position &operator+=(const Position &rhs); + + friend Position operator+(Position lhs, const Position &rhs); + + friend std::ostream &operator<<(std::ostream &os, const Position &pos); };