友元函数问题
eg:
#include <iostream.h>
class time
{
public:
time(int,int,int);
friend void display(time&);
public:
int hour;
int minute;
int sec;
};
time::time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void display()
{
time g;
cout < <g.hour < < ": " < <g.minute < < ": " < <g.sec < <endl;
}
void main()
{
time t(12,13,14);
display();
}
这样子不行啊??为什么??
难道一样要改成下面这样子??
#include <iostream.h>
class time
{
public:
time(int,int,int);
friend void display(time&);
private:
int hour;
int minute;
int sec;
};
time::time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void display(time&g)
{
cout < <g.hour < < ": " < <g.minute < < ": " < <g.sec < <endl;
}
void main()
{
time t(12,13,14);
display(t);
}
为什么??谁能帮我解释一下吗??先谢了~~~~
------解决方案--------------------void display(time&);
void display()
他们是两个函数,
构成重载 ~
------解决方案--------------------你没有默认构造函数time()
------解决方案--------------------class Time;
void display(Time g);
class Time
{
public:
Time(int h,int m,int s);
friend void display();
public:
int hour;
int minute;
int sec;
};
Time::Time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void display(Time g)
{
cout < <g.hour < < ": " < <g.minute < < ": " < <g.sec < <endl;
}
void main()
{
Time t(12,13,14);
display(t);
}