我试图在c ++中创建一个方法,在实现时看起来像
pointA.distanceTo(pointB)
但是,我在尝试合并" pointA"进入方法。目前,我的方法代码如下所示:
double Point::distanceTo(Point p1)
{
double xDist=getxCoord()-???;
double yDist=getyCoord()-???;
return sqrt(xDist*xDist-yDist*yDist);
}
我知道getxCoord()和getyCoord()方法只能获取distanceTo(Point p1)括号内的对象。
但我不知道如何从" pointA.distanceTo(pointB)"中的pointA获取对象信息。
答案 0 :(得分:2)
我知道
getxCoord()
和getyCoord()
方法只会将对象放在distanceTo(Point p1)
的括号内。
没有!当您执行pointA.distanceTo(pointB);
时,参数pointB
将成为p1
pointA
方法中的参数distanceTo
(而不是相反)。因此
double Point::distanceTo(Point p1)
{
double xDist = getxCoord()- p1.getxCoord();
double yDist = getyCoord()- p1.getyCoord();
return sqrt(xDist * xDist - yDist * yDist);
}
应该工作;这里第一个getxCoord()
将在pointA
(或this
指针)上运行,而下一个pointB
将在{{1}}上运行。
答案 1 :(得分:2)
我知道getxCoord()和getyCoord()方法只能获取distanceTo(Point p1)括号内的对象。
实际上你完全倒退了。这两个调用将获取此对象或PointA的值,也称为this
。要从p1
获取详细信息,您必须在其上调用方法:
double xDist = this->getxCoord() - p1.getxCoord();
double yDist = this->getyCoord() - p1.getyCoord();
this
是隐含的,你不需要它。以上相当于:
double xDist = getxCoord() - p1.getxCoord();
double yDist = getyCoord() - p1.getyCoord();
答案 2 :(得分:2)
您将函数distanceTo()
定义为类Point
的成员函数,如果您从pointA
调用该函数,则会自动将所有数据成员pointA
可以访问此函数。
因此,您可以为getxCoord()
致电getyCoord()
和pointB
,并直接访问X
Y
座pointA
来getxCoord()
1}}和getyCoord()
。
代码:
double Point::distanceTo(Point p1)
{
double xDist=getxCoord()-p1.getxCoord();
double yDist=getyCoord()-p1.getyCoord();
return sqrt(xDist*xDist-yDist*yDist);
}