在c+中创建一个方法+; 我试图在C++中创建一个方法,在这里实现时,看起来像 pointA.distanceTo(pointB)

在c+中创建一个方法+; 我试图在C++中创建一个方法,在这里实现时,看起来像 pointA.distanceTo(pointB),c++,function,methods,C++,Function,Methods,然而,我在尝试将“pointA”合并到方法中时遇到了困难。目前,我的方法代码如下所示: double Point::distanceTo(Point p1) { double xDist=getxCoord()-???; double yDist=getyCoord()-???; return sqrt(xDist*xDist-yDist*yDist); } 我知道getxCoord()和getyCoord()方法只会获取distanceTo(点p1)括号内的对象 但我

然而,我在尝试将“pointA”合并到方法中时遇到了困难。目前,我的方法代码如下所示:

double Point::distanceTo(Point p1)
{
    double xDist=getxCoord()-???;
    double yDist=getyCoord()-???;
    return sqrt(xDist*xDist-yDist*yDist);
}
我知道getxCoord()和getyCoord()方法只会获取distanceTo(点p1)括号内的对象

但我不知道如何从“pointA.distanceTo(pointB)”中的pointA获取对象信息

我知道
getxCoord()
getyCoord()
方法将只获取
distanceTo(点p1)
括号内的对象

不!当您执行
pointA.distanceTo(pointB)时
,参数
pointB
成为
pointA
distanceTo
方法中的参数
p1
(而不是相反)。因此

应该工作;这里,第一个
getxCoord()
将在
点A
(或
指针)上运行,下一个将在
点B
上运行

我知道getxCoord()和getyCoord()方法只会获取distanceTo(点p1)括号内的对象

事实上,你把它完全倒过来了。这两个调用将获取此对象或PointA的值,也称为
this
。要从
p1
获取详细信息,必须调用其上的方法:

double xDist = this->getxCoord() - p1.getxCoord();
double yDist = this->getyCoord() - p1.getyCoord();
这个
是隐式的,您不需要它。上述内容相当于:

double xDist = getxCoord() - p1.getxCoord();
double yDist = getyCoord() - p1.getyCoord();

将函数
distanceTo()
定义为类
Point
成员函数,如果从
pointA
调用该函数,则该函数将自动访问
pointA
的所有数据成员

因此,您可以为
pointB
调用
getxCoord()
getyCoord()
,并直接访问
pointA
X
Y
坐标

代码:


??? = <代码>p1.getxCoord()和???=
p1.getyCoord()
为什么要使用
getxCoord()
来获取
点A
的x坐标?如果一个成员函数是在类
中定义的,那么它的坐标不是可以被成员函数直接访问吗?@ShauryaChats是什么让你认为它是直接存储为x和y坐标的,而不是,比如说,与某个其他参考点的距离,所以它必须被计算出来?@legends2k我明白你的意思。
double xDist = getxCoord() - p1.getxCoord();
double yDist = getyCoord() - p1.getyCoord();
double Point::distanceTo(Point p1)
{
    double xDist=getxCoord()-p1.getxCoord();
    double yDist=getyCoord()-p1.getyCoord();
    return sqrt(xDist*xDist-yDist*yDist);
}