计算两点之间距离时的编译错误

时间:2012-02-05 07:20:41

标签: c++ oop

我无法弄清楚为什么这个程序不起作用。我确定这是基本的东西。

#include <iostream>
using namespace std;
class MyPoint
{
    int x;
    int y;
public:
    MyPoint()
    {
        x = 0;
        y = 0;
    }

    MyPoint(int newX, int newY)
    {
        x = newX;
        y = newY;
    }

    int getX()
    { 
        return x;
    }

    int getY()
    {
        return y;
    }

    int distance(MyPoint newPoint)
    {
      distance = x - newPoint.getX();//need absolute value function
      return distance;
    };

  int main()
  {
    MyPoint point1(0,0);
    MyPoint point2(5,5);

    cout << "THe distance between the two circles is " << point1.distance(point2) << endl;

    return 0;
  }

我正在尝试找到两点之间的距离,只是为了测试以确保我正确使用类。我只是使用x点。现在代码不会编译。

4 个答案:

答案 0 :(得分:4)

现在,你的第一个问题是main在课堂内 - 你在distance函数之后忘了一个近距离大括号。你已经得到了用于结束课程描述的分号,但总共有一个近距离支持太少了。

您的第二个问题是您在名为distance的函数中使用名为distance的变量。不要发生名字碰撞,他们会让小猫哭泣。

您的第三个问题是我刚才提到的distance变量应该是int类型。

作为另一条一般性建议,编译器会在您的代码编译时为您提供错误消息。发布这些内容很有帮助。

答案 1 :(得分:3)

您的问题在于distance功能:

int distance(MyPoint newPoint)
{
  distance = x - newPoint.getX();//need absolute value function
  return distance;
};

在这里,您有一个名为distance的变量,它不会在任何地方声明,并且还会使用函数名称重载。相反,您需要声明一个新的局部变量然后返回它,或者立即返回它:

选项1:

int distance(MyPoint newPoint)
{
  int d = x - newPoint.getX(); // renamed d, adding int
  return d;
};

选项2:

int distance(MyPoint newPoint)
{
  return x - newPoint.getX();
};

答案 2 :(得分:1)

1)距离功能后关闭支撑。
2)距离函数的实现不正确。

如果你真的想让它计算两点之间的距离,你应该写一些类似的东西:

double distance(MyPoint newPoint)
{
  double distance;
  distance=sqrt((x-newPoint.getX())*(x-newPoint.getX())
                    +(y-newPoint.getY())*(y-newPoint.getY()));
  return distance;
}

它将使用毕达哥拉斯定理找到距离 1)用double类型声明可变距离 2)使用毕达哥拉斯定理计算距离 3)返回变量值。

答案 3 :(得分:0)

你的大括号里有一个错误。

以下代码正确运行:(编辑) - 添加了AI正确指出的abs

#include <iostream>
using namespace std;
class MyPoint
{
int x;
int y;
public:
MyPoint()
{
    x = 0;
    y = 0;
}

MyPoint(int newX, int newY)
{
    x = newX;
    y = newY;
}

int getX()
{
    return x;
}

int getY()
{
    return y;
}

int distance(MyPoint newPoint)
{
  return abs(newPoint.getX() - x);//need absolute value function

}
};

int main()
{
MyPoint point1(0,0);
MyPoint point2(5,5);

cout << "THe distance between the two circles is " << point1.distance(point2) << endl;

return 0;
}