| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 823 人关注过本帖
标题:怎么友元函数不能访问私有成员?
只看楼主 加入收藏
xxhh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-7
收藏
 问题点数:0 回复次数:3 
怎么友元函数不能访问私有成员?

#include <iostream>
using namespace std;

class Time;
class Date
{
public:
Date(int y=2004,int m=1,int d=1):year(y),month(m),day(d){}
friend void shouDateTime(Date &d,Time &t);
private:
int year,month,day;
};

class Time
{
public:
Time(int h=0,int m=0,int s=0):hour(h),minute(m),second(s){}
friend void showDateTime(Date &d,Time &t);
private:
int hour,minute,second;
};

void showDateTime(Date &d,Time &t)
{
cout<<"Now is"<<d.year<<".";

if(d.month<10) cout<<"0";
cout<<d.month<<".";

if(d.day<10) cout<<"0";
cout<<d.day<<" ";

if(t.hour<10) cout<<"0";
cout<<t.hour<<":";

if(t.minute<10) cout<<"0";
cout<<t.minute<<":";

if(t.second<10) cout<<"0";
cout<<t.second<<"."<<endl;
}

int main()
{
Date d(2004,9,18);
Time t(10,5,30);
showDateTime(d,t);
return 0;
}

每次编译的时候总是出现如下的错误:
…………:error C2248: 'year' : cannot access private member declared in class 'Date'
…………:see declaration of 'year'
请教一下是什么原因呢?谢谢!

[此贴子已经被作者于2005-12-7 22:46:21编辑过]

搜索更多相关主题的帖子: int 函数 Date 成员 
2005-12-07 22:43
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
第一个声明打错字母了吧

2005-12-07 23:31
flyhigh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-10
收藏
得分:0 

你的第一个语句应该改成#include<iostream.h>
置于为什么我也不知道
我昨天也是遇到这样的问题
我也是看到你的贴子有所启发的

2005-12-10 13:39
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

可能是你声明出了问题,好像不能够同时将一个函数声明为不同类的友元


c++/C + 汇编 = 天下无敌
2005-12-10 16:10
快速回复:怎么友元函数不能访问私有成员?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017021 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved