用c ++创建方法

时间:2015-01-22 03:52:42

标签: c++ function methods

我试图在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获取对象信息。

3 个答案:

答案 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 YpointAgetxCoord() 1}}和getyCoord()

代码:

double Point::distanceTo(Point p1)
{
    double xDist=getxCoord()-p1.getxCoord();
    double yDist=getyCoord()-p1.getyCoord();
    return sqrt(xDist*xDist-yDist*yDist);
}