#include<iostream> #include<cmath> using namespace std; class Points{ public: Points(double xx=0.0,double yy=0.0); // 用参数初始化点的坐标 double GetX()const; // 返回横坐标 double GetY()const; // 返回纵坐标 friend void print(Points*); // 输出点的坐标 friend double distance(Points,Points); // 求两点间的距离 private: double x,y; // 点的坐标 }; Points::Points(double xx,double yy):x(xx),y(yy) { } double Points::GetX( )const { return x; } double Points::GetY()const { return y; } //ERROR**********found********** void Points::print(Points*p) { //ERROR**********found********** cout<<"点:("<<p->x<<','<<p->y<<")\n"; } //ERROR**********found********** double Points::distance(Points p1,Points p2) { double dx,dy; dx=p1.x-p2.x; dy=p1.y-p2.y; return sqrt(dx*dx+dy*dy); } int main() { Points pa,pb(1.0,2.0); print(&pa); print(&pb); //ERROR**********found********** cout<<"距离:"<<Points::distance(pa,pb)<<endl; system("pause"); return 0; }有哪些错的
时间: 2023-07-06 18:42:02 浏览: 144
代码中有三处错误:
1. `print` 和 `distance` 函数应该是全局函数,而不是 `Points` 类的成员函数,因此不能在 `Points` 类中定义。
2. 在 `print` 函数中,应该输出的是当前对象(即调用该函数的对象)的坐标,而不是传入的指针指向的对象的坐标。因此,函数的参数应该改为 `const Points&` 类型,并且输出该对象的 `x` 和 `y` 成员变量即可。
3. 在 `main` 函数中,调用 `print` 函数时应该传入对象的地址,而不是对象本身。因此,调用 `print` 函数时应该改为 `print(&pa)` 和 `print(&pb)`。
修改后的代码如下:
```c++
#include<iostream>
#include<cmath>
using namespace std;
class Points{
public:
Points(double xx=0.0,double yy=0.0);
double GetX()const;
double GetY()const;
private:
double x,y;
};
Points::Points(double xx,double yy):x(xx),y(yy) { }
double Points::GetX( )const {
return x;
}
double Points::GetY()const {
return y;
}
void print(const Points& p) {
cout<<"点:("<<p.x<<','<<p.y<<")\n";
}
double distance(const Points p1,const Points p2) {
double dx,dy;
dx=p1.x-p2.x;
dy=p1.y-p2.y;
return sqrt(dx*dx+dy*dy);
}
int main() {
Points pa,pb(1.0,2.0);
print(pa);
print(pb);
cout<<"距离:"<<distance(pa,pb)<<endl;
system("pause");
return 0;
}
```
阅读全文