急求 “友员函数”程序的错误
哪位大虾 能给我看一下这个程序 这个程序的目的是向求两点间的距离 通过定义“点”定义两个点的对象通过友员函数来同时访问两个点 编译没有错误但是 在连接的是侯它提示有一处错误 //程序1
#include<iostream.h>
#include<math.h>
class point
{
public:
point(double a,double b)
{
x=a;y=b;
cout<<""point:("<<x<<","<<y<<")"<<endl;
}
friend double distance(point &p1,point &p2);
public:
double x,y;
};
double disatance(point &p1,point &p2)
{
double dex,dey;
dex=p1.x-p2.x;
dey=p1.y-p2.y;
return sqrt(dex*dex+dey*dey);
}
void main()
{
point p1(1,2);
point p2(2,3);
cout<<"两点间的距离是:"<<distance(p1,p2)<<endl;
}
下面这个程序 第一次新建工程运行可以通过结果为“中国软件开发实验室”但 在这个工程的基础上再建一个工程 运行最上面那个程序1(还是显示连接错误)后 在运行程序2 程序2就开始出错了 错误和程序一的一样。我很不明白为什么同一个程序 却出现了两种情况呢
有些人说程序一那种用法不对 但是程序2和1几乎是一样的为什么 2可以通过而一不可以呢?
还有一个问题是 像disatance(point &p1,point &p2) 这样带两个参量的应该怎么处理 当然带一个不会出错的
//程序2
#include <iostream>
class Internet
{
public:
Internet(char *name,char *address)
{
strcpy(Internet::name,name);
strcpy(Internet::address,address);
}
friend void ShowN(Internet &obj,Internet,&obk);//友元函数的声明
public:
char name[20];
char address[20];
};
void ShowN(Internet &obj,Ineternet &obk)//函数定义,不能写成,void Internet::ShowN(Internet &obj)
{
cout<<obj.name<<obk.address<<endl;
}
void main()
{
Internet a("中国软件开发实验室",");
Internet b("中国软件开发实验室",");
ShowN(a,b);
}