首先是这个函数:tance(int , point);
所有声明要修改为: distance(line, point);
要做到这一点,必须在point类定义之前加上:
class point;
class line;
double distance(line, point);
这三个声明。
然后里面的由原函数声明改为:friend double distance(line, point);
如下:
#include
#include
using namespace std;
class line;
class point;
double distance(line ,point );
class point{
private: int _x; int _y;
public:
point():_x(0),_y(0) {}
point(int x,int y):_x(x),_y(y) {}
friend double distance(line ,point );
};
class line{
private:
int _a; int _b; int _c;
public:
line():_a(0),_b(0),_c(0) {}
line(int a,int b,int c):_a(a),_b(b),_c(c) {}
//line(int a,point pt):_a(a),_b(pt._x),_c(pt._y) {} //就算有这构造函数,由于point内容是私有的,无法成功赋值。
friend double distance(line ,point ); //这边末尾少了一个分号。
};
double distance(line l,point p)
{
return abs((l._a*p._x+l._b*p._y+l._c)/(l._a*l._a+l._b*l._b)); //这里有一个笔误,已修正
}
void main(){
int a,b,c;
cout<<"请输入二次项系数"<
cout<<"请输入一次项系数"<
cout<<"请输入常数项"<
int x,y;
cout<<"请输入点的横坐标X"<
cout<<"请输入点的纵坐标Y"<
point d(x,y);
line e(c,x,y); //这里你无法用point给line初始化,原因见上面的构造函数
double h;
h=distance(e,d);//cout<<"请输入X"<
编译结果:
--------------------Configuration: XX - Win32 Debug--------------------
Compiling...
XX.cpp
Linking...
XX.exe - 0 error(s), 0 warning(s)