在 C++ 中创建方法
Creating a method in c++
我正在尝试用 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)"中的点A获取对象信息。
我知道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();
您将函数distanceTo()
定义为类 Point
的成员函数,如果您从 pointA
调用该函数,则自动访问该函数的所有数据成员pointA
。
因此,您可以调用getxCoord()
和getyCoord()
进行pointB
,并直接访问pointA
呼叫getxCoord()
和getyCoord()
的X
和Y
坐标。
法典:
double Point::distanceTo(Point p1)
{
double xDist=getxCoord()-p1.getxCoord();
double yDist=getyCoord()-p1.getyCoord();
return sqrt(xDist*xDist-yDist*yDist);
}
我知道
getxCoord()
和getyCoord()
方法只会在distanceTo(Point p1)
的括号内获取对象。
不!当你做pointA.distanceTo(pointB);
时,参数pointB
成为pointA
distanceTo
方法中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
上运行。
相关文章:
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何使用返回第 n 个元素的方法创建元组
- 工厂方法创建的对象应该在哪里删除?
- 如何发送通过绑定到函数/方法创建的函数对象?
- CPP:如何使用需要指针的方法创建线程
- 如何使用 C++ 方法创建 JSON 文件
- 电子内部或外部方法创建自己的右键单击上下文菜单 - Windows
- 如何使用工厂方法创建不同的对象
- 在C++/WRL中使用静态方法创建WinRT组件
- 我可以有一个仅使用工厂方法创建的成员变量吗?
- 为类方法创建模板
- 使用 wxBitmap::NewFromPNGData 方法创建位图会导致 wxWidgets 3.0 中的断言
- 如何在C++中为模板化类中的单个方法创建专用化
- 在 c/c++ 中为有限差分方法创建五边形稀疏矩阵的最佳方法是什么?
- 用c++方法创建模板类
- c++虚方法:必须在父类中为父类和子类不共享的每个方法创建一个虚方法吗?
- C++ 使用 "new" 或其他创建动态数组的方法创建类似静态数组
- 在Turtle中为常量方法创建Mock
- 在c++中使用try和catch方法创建一个函数来获取用户名
- 访问同一类的另一个方法中的一种方法.创建动态数组C++