读书人

关于友元有关问题friend

发布时间: 2012-04-05 12:42:40 作者: rapoo

关于友元问题friend
我想用在Time类中的成员函数分别成为Date和Box 的成员函数的朋友。这样写,代码错误,请问应该怎样写呢??
求帮助!!谢谢!!
#include <iostream>
using namespace std;
class Date;
class Box;
class Time
{
public:
Time(int,int ,int);
void display(Time &,Box &);
private:
int hour;
int minute;
int sec;
};
class Date
{
public:
Date(int,int,int);
friend void Time::display(Date &,Box &);
private:
int month;
int day;
int year;
};

class Box
{
public:
Box(int a,int b):a1(a),b1(b){}
friend void Time::display(Date &,Box &);
private:
int a1;int b1;
}
Time::Time(int h,int m,int s)
{
hour=h;minute=m;sec=s;
}
void Time::display(Date &d,Box &e)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
cout<<e.a1<<" "<<e.b1<<endl;
}

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

int main()
{
Time t1(10,13,56);
Date d1(12,25,2004);
Box e1(101,999);
t1.display(d1,e1);
return 0;
}

[解决办法]
见注释

C/C++ code
#include <iostream>using namespace std;class Date;class Box;class Time{public:    Time(int,int ,int);    //void display(Time &,Box &);        void display(Date &, Box &);private:    int hour;    int minute;    int sec;};class Date{public:    Date(int,int,int);        friend void Time::display(Date &,Box &);private:    int month;    int day;    int year;};class Box{public:    Box(int a,int b):a1(a),b1(b){}    friend void Time::display(Date &,Box &);       int a1;int b1;};               //此处缺少了分号 ; Time::Time(int h,int m,int s){    hour=h;    minute=m;    sec=s;}void Time::display(Date &d,Box &e)                {    cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;    cout<<e.a1<<" "<<e.b1<<endl;}Date::Date(int m,int d,int y){    month=m;day=d;year=y;}int main(){    Time t1(10,13,56);    Date d1(12,25,2004);    Box e1(101,999);    t1.display(d1,e1);    return 0;} 

读书人网 >C++

热点推荐