哪位大神帮忙看看这段c++代码?

#include<iostream>#include<math.h>usingnamespacestd;classPoint{public:Point();Point(d... #include<iostream>
#include<math.h>
using namespace std;
class Point
{
public:
Point();
Point(double x1,double y1);
void print();
friend double getDistance(Point a,Point b);
private:
double x,y;
};
Point::Point()
{
x=1;
y=1;
};
Point::Point(double x1,double y1)
{
x=x1;
y=y1;
}
double getDistance(Point a,Point b)
{
return sqrt((a.x-b.x)^2+(a.y-b.y)^2);
}
void Point::print()
{
cout<<getDistance(Point a,Point b)<<endl;
}
void main()
{
double x1,y1;
cin>>x1>>y1;
Point a;
Point b(x1,y1);
getDistance( a, b);
Point::print();
}
展开
 我来答
YaNaKaSa
2015-11-11 · TA获得超过114个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:86.1万
展开全部

有如下错误:

(1)

double getDistance(Point a,Point b)
{
   return sqrt((a.x-b.x)^2+(a.y-b.y)^2); //error
}

因为^在C/C++中是异或运算符,而且要求操作数必须是整数.x,y是浮点数!

向求平方用math.h中的pow( a.x -b.x , 2)

(2)

void Point::print()
{
  cout<<getDistance(Point a,Point b)<<endl; //error
}

这里Point a, Point b是进行变量定义,但定义的位置是实参传递的位置!

这在C++中是不允许的,可以改成如下形式

void Point::print()
{
 Point a,Point b;
  cout<<getDistance( a , b )<<endl; //OK
}

或者

void Point::print()
{
 
  cout<<getDistance(  Point( ),Point( ); )<<endl; //OK
}

(3)

  Point::print(); //error

你这种使用方式只有在print是public且为static时才可用。

可以修改为

a.print( );

b.print( );

 

明白了吗,宝贝。有什么问题可以追问

扈怀炜4h
2015-11-11 · TA获得超过6040个赞
知道大有可为答主
回答量:6907
采纳率:67%
帮助的人:1416万
展开全部
return sqrt((a.x-b.x)^2+(a.y-b.y)^2); 没有这个运算符^,只能老老实实写* 或调用函数pow
double getDistance(Point a,Point b)的参数应该用引用 double getDistance(Point &a,Point &b)
print这个成员函数没有意义,不如直接在转函数里用cout<<getDistance(a,b)输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式