C++ 创建一个函数来获取两点之间的距离

Eoi*_*gan 2 c++ function distance object

在我的程序中,我创建了一个Point用两个值调用的构造函数。我还有一个set, get,scaletranslate函数。我正在尝试创建一个函数,使我能够获取对象与另一个点之间的距离。我遇到了麻烦,但任何帮助都会很棒。

#ifndef POINTMODEL
#define POINTMODEL
#define POINTDEB UG

#include <iostream>
#include <string.h>

using namespace std;

class Point {
public:
    Point(void);
    Point(double anX, double aY);
    ~Point();

    void setPoint(double anX, double aY);

    double getX();
    double getY();

    double scaleX(double theX);
    double scaleY(double theY);
    void translate(double theX, double theY);

    void distance(const Point& aPoint);

protected:
private:
    double theX;
    double theY;
};

inline Point::Point(void)
{
    theX = 1;
    theY = 1;
    cout << "\n The default constructor was called" << endl;
}

inline Point::Point(double anX, double aY)
{
    cout << "\n regular constructor called";
}

inline Point::~Point()
{
    cout << "\n the destructor was called" << endl;
}

inline void Point::setPoint(double anX, double aY)
{
    theX = anX;
    theY = aY;
}

inline double Point::getX()
{
    return theX;
}

inline double Point::getY()
{
    return theY;
}

inline double Point::scaleX(double theX)
{
    return theX;
}

inline double Point::scaleY(double theY)
{
    return theY;
}

inline void Point::translate(double offSetX, double offSetY)
{
    cout << "X is translated by : " << offSetX << endl;
    cout << "Y is translated by : " << offSetY << endl;
}

inline void Point::distance(const Point& aPoint)
{
}

#endif
Run Code Online (Sandbox Code Playgroud)

.cpp文件:

#include "Point.h"

using namespace std;

int main(void)
{
    cout << "\n main has started" << endl;

    //Point myPoint;
    Point myPoint(1, 1);

    myPoint.setPoint(1, 1);

    cout << "\n The value for X is : " << myPoint.getX() << endl;
    cout << "\n The value for Y is : " << myPoint.getY() << endl;

    cout << "\n X scaled by 2 is : " << myPoint.scaleX(2) << endl;
    cout << "\n Y scaled by 2 is : " << myPoint.scaleY(2) << endl;

    myPoint.translate(2, 3);

    cout << "\n main has finished" << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 5

您需要使您的Point::getX()Point::getY()功能const像这样:

inline double Point::getX() const
{
    return theX;
}
Run Code Online (Sandbox Code Playgroud)

如果不是,const当参数是const引用时,您将无法调用它们。

那么距离是(从 改为 返回voiddouble

double distance(const Point & aPoint) const
{
    const double x_diff = getX() - aPoint.getX();
    const double y_diff = getY() - aPoint.getY();
    return std::sqrt(x_diff * x_diff + y_diff * y_diff);
}
Run Code Online (Sandbox Code Playgroud)

我故意不使用,std::pow因为指数是 2。您还需要包含<cmath>for std::sqrt