예제 푸는도중에 이해가되지않아 질문드립니다
글쓴이: 익명 사용자 / 작성시간: 수, 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 맴버 오류는...
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; friend ostream& operator<<(ostream &os, const Point &p); };ostream& operator<<(ostream &os, const Point& p) { os << "(" << p.m_x << ", " << p.m_y << ")"; return os; }operator 오버로딩 선언에서 Point::operator<< 가 아닌 ostream& operator<< 로 구현하셔야..
아래 p3 = 20 + p1; //오류는 int + Point 를 + 연산자 오버로딩 정의하지 않아서 입니다.
댓글 달기