c++的友元问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:36:37
#include <iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int ,int ,int);
void display(const Date &);
private:
int hour;
int second;
int minute;
};

Time::Time(int h,int m,int s):hour(h),minute(m),second(s){}

class Date
{
public:
Date(int,int,int);
friend void display(const Date &);
private:
int year;
int month;
int day;
};

Date::Date(int y, int m, int d):year(y),month(m),day(d){}

void Time::display(const Date &d)
{
cout<<d.year<<"/"<<d.month<<"/"<<d.day<<endl;
cout<<hour<<":"<<minute<<":"<<second<<endl;
}

int main()
{
Date d1(2,3,4);
Time t1(3,4,5);
t1.display(d1);
return 0;
}
不知道问题出现在那里,虽然编译的时候提示不能够使用私有变量,但是我觉得既然用到友元了,那么

class Date
{
public:
Date(int,int,int);
friend void display(const Date &);
private:
int year;
int month;
int day;
};
这里的 friend void display(const Date &);改成friend class Time,类成员想要访问另一个类请使用友元类
如果你实在只是想把一个类中的方法设为另一个类友元类函数,那么要加上这个函数的作用域,也就是改成friend void Time::display(const Date &);