【问题标题】:Creating a method in c++在 C++ 中创建一个方法
【发布时间】:2015-01-22 03:52:41
【问题描述】:

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

【问题讨论】:

  • ??? = p1.getxCoord() 和 ??? = p1.getyCoord()
  • 为什么用getxCoord()来获取pointA的x坐标?如果在Point类中定义了一个成员函数,它的坐标不是可以被成员函数直接访问吗?
  • @ShauryaChats 是什么让你假设它直接存储为 x 和 y 坐标 w.r.t.原点而不是与其他参考点的距离,所以必须计算它?
  • @legends2k 我明白你的意思。

标签: c++ function methods


【解决方案1】:

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

实际上你完全倒退了。这两个调用将获得 this object 或 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】:

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

    因此,您可以调用getxCoord()getyCoord() 获取pointB,并直接访问pointAXY 坐标,调用getxCoord()getyCoord()

    代码:

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

    【讨论】:

      【解决方案3】:

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

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

      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 上运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-29
        • 1970-01-01
        • 2020-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多