一个函数引用多个类中私有数据

星辉科技工作室 2008-12-06 11:53:39
#include <iostream>
using namespace std;
class time
{
public:
time(int h,int m,int sec):hour(h),minute(m),second(sec){}
friend void show_time(time &);
private:
int hour;
int minute;
int second;
};
class data
{
public:
data(int m int d,int y):month(m),day(d),year(y){}
friend void show_time(data &);
private:
int month;
int day;
int year;
};
void show_time(data &d)
{
cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;
}
void show_time(time &t)
{
cout<<t.hour<<":"<<t.minute<<":"<<t.second<<endl;
}
int main()
{
time t1(22,21,18);
data d1(12,6,2008);
show_time(d1);
show_time(t1);
return 0;
}

我的目的是函数show_time()应用多个类中的私有数据,请高手帮我调试哈!谢谢啦!
...全文
182 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshuise 2008-12-08
  • 打赏
  • 举报
回复
你直接写一个接口就行啦,记住是对抽象编程是对接口编程。不是对实现编程。
jiww03 2008-12-08
  • 打赏
  • 举报
回复
做成公有的成员变量,或者向上面的用友元函数,在类外不能访问私有变量
lann64 2008-12-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hqin6 的回复:]
nothing~~~~~~
[/Quote]
??
用g++编译试试!
太乙 2008-12-07
  • 打赏
  • 举报
回复
nothing~~~~~~
yjh1023 2008-12-07
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
class time
{
public:
time(int h,int m,int sec):hour(h),minute(m),second(sec){}
friend void show_time(time &);
private:
int hour;
int minute;
int second;
};
class data
{
public:
data(int m,int d,int y):month(m),day(d),year(y){}
friend void show_time(data &);
private:
int month;
int day;
int year;
};
void show_time(data &d)
{
cout <<d.month <<"/" <<d.day <<"/" <<d.year <<endl;
}
void show_time(time &t)
{
cout <<t.hour <<":" <<t.minute <<":" <<t.second <<endl;
}
int main()
{
time t1(22,21,18);
data d1(12,6,2008);
show_time(d1);
show_time(t1);
return 0;
}

nullah 2008-12-07
  • 打赏
  • 举报
回复

class data
{
public://|----------M这少了个逗号
data(int m, int d,int y):month(m),day(d),year(y){}
friend void show_time(data &);
private:
int month;
int day;
int year;
};

改了后VS2005下编译通过
bingshanzhiling 2008-12-07
  • 打赏
  • 举报
回复
貌似没有什么良好的解决办法。。。
太乙 2008-12-07
  • 打赏
  • 举报
回复
#include <iostream> 
using namespace std;
class time
{
public:
time(int h,int m,int sec):hour(h),minute(m),second(sec){}
friend void show_time(time &);
private:
int hour;
int minute;
int second;
};
class data
{
public:
data(int m ,int d,int y):month(m),day(d),year(y){}
friend void show_time(data &);
private:
int month;
int day;
int year;
};
void show_time(data &d)
{
cout <<d.month <<"/" <<d.day <<"/" <<d.year <<endl;
}
void show_time(time &t)
{
cout <<t.hour <<":" <<t.minute <<":" <<t.second <<endl;
}
int main()
{
time t1(22,21,18);
data d1(12,6,2008);
show_time(d1);
show_time(t1);
return 0;
}
lann64 2008-12-07
  • 打赏
  • 举报
回复
跟几个类没关系。是你用了using指定,time跟std里名字冲突的问题
#include <iostream>
using namespace std;
class mytime
{
public:
mytime(int h,int m,int sec):hour(h),minute(m),second(sec) {}
friend void show_time(mytime &);
private:
int hour;
int minute;
int second;
};
class data
{
public:
data(int m ,int d,int y):month(m),day(d),year(y) {}
friend void show_time(data &);
private:
int month;
int day;
int year;
};
void show_time(data &d)
{
cout <<d.month <<"/" <<d.day <<"/" <<d.year <<endl;
}
void show_time(mytime &t)
{
cout <<t.hour <<":" <<t.minute <<":" <<t.second <<endl;
}
int main()
{
mytime t1(22,21,18);
data d1(12,6,2008);
show_time(d1);
show_time(t1);
return 0;
}
0黄瓜0 2008-12-07
  • 打赏
  • 举报
回复
show_time最好是做为成员函数。
onion923 2008-12-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 nullah 的回复:]
C/C++ code
class data
{
public://|----------M这少了个逗号
data(int m, int d,int y):month(m),day(d),year(y){}
friend void show_time(data &);
private:
int month;
int day;
int year;
};



改了后VS2005下编译通过
[/Quote]
除了这个逗号之外,正确的啊!
cba_v 2008-12-07
  • 打赏
  • 举报
回复
在time类外 加个 命名空间 namespace
toadzw 2008-12-06
  • 打赏
  • 举报
回复
up

64,647

社区成员

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

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