大神求解这是怎么回事,为什么在第四十行的位置,hour,等显示不可访问呢?

德忱 2014-06-12 03:13:14
#include<iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int,int,int);
friend void display(Date &);
private:
int hour;
int minute;
int sec;
};

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

Time::Time(int h, int m, int s)
{
hour = h;
minute = m;
sec = s;
}

void display(Date &d)
{
cout<<d.mouth<<" /"<<d.day<<" /"<<d.year<<endl;
}

void display(Time &t)
{
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;
}

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

int main()
{
Time t1(10,13,56);
Date d1(12,25,2004);
display(d1);
display(t1);
return 0;
}
...全文
87 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
德忱 2014-06-12
  • 打赏
  • 举报
回复
引用 10 楼 peterzhangxl 的回复:
第8行 friend void display(Date &); 改为 friend void display(Time &);
明白了,谢谢。。。
德忱 2014-06-12
  • 打赏
  • 举报
回复
引用 9 楼 wen_eric 的回复:
[quote=引用 7 楼 klmn111aaa 的回复:] [quote=引用 2 楼 wen_eric 的回复:] 楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
人家是第一次提问。。。[/quote]数据成员hour的访问权限设置成了private的话,只能在类内访问,不能在类外访问。[/quote总算搞明白了。嘿嘿。谢谢诸位。
peterzhangxl 2014-06-12
  • 打赏
  • 举报
回复
第8行 friend void display(Date &); 改为 friend void display(Time &);
wen_eric 2014-06-12
  • 打赏
  • 举报
回复
引用 7 楼 klmn111aaa 的回复:
[quote=引用 2 楼 wen_eric 的回复:] 楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
人家是第一次提问。。。[/quote]数据成员hour的访问权限设置成了private的话,只能在类内访问,不能在类外访问。
wen_eric 2014-06-12
  • 打赏
  • 举报
回复
引用 5 楼 u014440417 的回复:
引用 2 楼 wen_eric 的回复:
楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
结贴率?什么意思,嘿嘿,我是个小菜鸟,真的不懂,
意思就是说,你即使你的问题分数给的再高,你不结贴给分,别人怎么帮你呢?我得向三楼的哥们学习,慷慨一些才行啊。
klmn111aaa 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 wen_eric 的回复:
楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
人家是第一次提问。。。
德忱 2014-06-12
  • 打赏
  • 举报
回复
引用 3 楼 jianwen0529 的回复:
私有不可在类外访问。
你把函数声明为该类的友元函数试试。
你的声明友元函数只有一个
void display(Date &d);

void display(Time &t); //没有
德忱 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 wen_eric 的回复:
楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
结贴率?什么意思,嘿嘿,我是个小菜鸟,真的不懂,
幻夢之葉 2014-06-12
  • 打赏
  • 举报
回复
引用 2 楼 wen_eric 的回复:
楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
第一次提问可以理解
幻夢之葉 2014-06-12
  • 打赏
  • 举报
回复
私有不可在类外访问。 你把函数声明为该类的友元函数试试。 你的声明友元函数只有一个 void display(Date &d); void display(Time &t); //没有
wen_eric 2014-06-12
  • 打赏
  • 举报
回复
楼主的结贴率太“高”了,我知道怎么回事也不好意思告诉你啊
德忱 2014-06-12
  • 打赏
  • 举报
回复
题目要求是把display放在类外声明,作为普通函数,类内作为声明为友元函数,主函数中调用,display调用time类和date类的私有数据,输出年月日,时分秒

64,633

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧