我无法弄清楚为什么这个程序不起作用。我确定这是基本的东西。
#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
点。现在代码不会编译。
答案 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;
}