주어진 점이 원 (xy 평면에있는 정수)에 포함되어 있는지 확인하는 함수를 작성하려고합니다. 그 일을 위해, 나는 아래에 표시된 것과 같이 쓴 클래스를 사용하고 싶다.클래스를 기반으로 함수를 구현하는 데 어려움이 있습니다
class Point
{
public:
Point(int x, int y);
int getX() const;
int getY() const;
void setX(int x);
void setY(int y);
private:
int x, y;
};
class Circle
{
public:
Circle(int x, int y, int r);
bool contains(const Point &p) const;
private:
const Point center;
int radius;
};
나는 기능 '포함'을 서면으로 어려움을 찾을 수 있습니다. 내가 한 것은 다음과 같습니다. 이 함수를 작성할 때 "멤버 Point :: x에 액세스 할 수 없습니다."라는 오류가 표시되며 잘못된 점을 이해할 수 없습니다.
bool Circle::contains(const Point &p) const
{
if ((p.x-center.x)>=(-1*radius) && (p.x-center.x)<=radius && (p.y-center.y)>=(-1*radius) && (p.y-center.y)<=radius)
return true;
return false;
}
'p.x'가'private'이기 때문에'p.x'를 사용할 수 없습니다. 대신에'p.getX()'를 사용해야합니다. getter와 setter를 삭제하고'x'와'y''를'public'으로 만드는 것이 더 합리적입니다. – nwp