如果一个普通函数被多个类声明为“朋友”,如何引用多个类中的私有数据

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:55:15
#include <iostream>
using namespace std;
class date;
class time
{
public:
time(int,int,int);
void display(date &);
private:
int hour;
int minute;
int sec;
};
class date
{
public:
date(int,int,int);
friend void time::display(date &);
private:
int month;
int day;
int year;
};
time::time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void display(date &d1)
{
cout<<d1.month<<"/"<<d1.day<<"/"<<d1.year<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
date::date(int m,int d,int y)
{
month=m;
day=d;
year=y;
}
int main()
{
time t(10,13,56);
date d(12,25,2007);
t.display(d);
return 0;
}
把上面程序中的display函数不放在time类中

void display(date &d1)
{
cout<<d1.month<<"/"<<d1.day<<"/"<<d1.year<<endl;
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
将你这个函数头改为:void time::display(date &d1) 就可以了.
还有一种是这样的:
#include"inc.h"
#include <iostream>
using namespace std;
class date;
class time
{
public:
time(int,int,int);
friend void display(date &d1,time &t1) ;
private:
int hour;
int minute;
int sec;
};
class date
{
public:
date(int,int,int);
friend void display(date &d1,time &t1) ;
private:
int month;
int day;
int year;
};
time::time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void display(date &d1,time &t1)
{
cout<<d1.month<<"/"<<d1.day<