读书人

友元函数有关问题

发布时间: 2012-02-19 19:43:39 作者: rapoo

友元函数问题
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);
}

读书人网 >C++

热点推荐