예제 푸는도중에 이해가되지않아 질문드립니다
글쓴이: 익명 사용자 / 작성시간: 수, 2018/11/28 - 12:40오후
#include <iostream> using namespace std; class Point { protected: int m_x, m_y; public: void Print() const; void SetXY(int x, int y); Point(int x = 0, int y = 0); bool operator==(const Point& p) const; Point operator+(const Point& p) const; }; void Point::Print() const { cout << "(" << m_x << ", " << m_y << ")"; } void Point::SetXY(int x, int y) { m_x = x; m_y = y; } Point::Point(int x, int y) { m_x = x; m_y = y; } bool Point::operator==(const Point& p) const { return (m_x == p.m_x && m_y == p.m_y); } Point Point::operator+(const Point& p) const { return Point(m_x+p.m_x, m_y+p.m_y); } ostream& Point::operator<<(ostream &os, const Point& p) //오류 { os << "(" << p.m_x << ", " << p.m_y << ")"; return os; } int main() { Point p1(10, 10); Point p2 = p1 + 20; cout << "p2 = " << p2 << "\n"; Point p3 = 20 + p1; //오류 cout << p2 << "과 " << p3; if( p2 == p3 ) cout << "은 좌표가 같습니다.\n"; else cout << "은 좌표가 다릅니다.\n"; return 0; }
operator의 맴버 오류와 p.m_x와 p.m_y의 액세스오류를 이해하기가어렵네요
Forums:
operator 맴버 오류는...
operator 오버로딩 선언에서 Point::operator<< 가 아닌 ostream& operator<< 로 구현하셔야..
아래 p3 = 20 + p1; //오류는 int + Point 를 + 연산자 오버로딩 정의하지 않아서 입니다.
댓글 달기