C++ 基于类实现函数的困难
我试图编写一个函数,检查给定点是否包含在圆中(位于整数xy平面中)。对于该任务,我希望使用类,我编写的类如下所示C++ 基于类实现函数的困难,c++,class,C++,Class,我试图编写一个函数,检查给定点是否包含在圆中(位于整数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); boo
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;
};
我发现写函数“contains”有些困难。
这就是我所做的。当我编写这个函数时,我得到一个错误,说“memberpoint::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;
bool Circle::contains(const Point&p)const
{
如果((p.x-center.x)>=(-1*半径)和&(p.x-center.x)=(-1*半径)和&(p.y-center.y)x
是类点
的私有数据成员,这基本上意味着它不能从点
类外部直接访问
要从Point
类外部访问x
,您需要一个返回x
的公共函数
int getX() const {
return x;
}
当您需要从点
类外部访问x
时,调用此函数。您不能访问类外部的私有成员。在类点
中,x
是私有成员,因此您不能从圈
访问它
您的代码包含一个公共函数int getX()const
,该函数正好用于您的情况,从另一个上下文访问x
您应该使用圆圈
中的这个公共成员函数,使用它您的代码应该如下所示:
bool Circle::contains(const Point &p) const
{
// Copy of question code, note that this code doesn't do what you think it does
if ((p.getX()-center.getX())>=(-1*radius) &&
(p.getX()-center.getX())<=radius &&
(p.getY()-center.getY())>=(-1*radius) &&
(p.getY()-center.getY())<=radius)
{
return true;
}
return false;
}
bool Circle::contains(const Point&p)const
{
//问题代码的副本,请注意,此代码不做您认为它做的事情
如果((p.getX()-center.getX())>=(-1*半径)和
(p.getX()-center.getX())=(-1*半径)和
(p.getY()-center.getY())我想下面的代码可以。我没有错,是吗
bool Circle::contains(const Point &p) const
{
int distX, distY;
distX=p.getX()-center.getX();
distY=p.getY()-center.getY();
if ((distX*distX + distY*distY) > (radius*radius))
return false;
return true;
}
感谢你们大家!你们不能使用p.x
,因为p.x
是private
。你们必须使用p.getX()
。尽管删除你们的getter和setter更为合理,只需将x
和y
公开即可。现在是这样吗?