标题:[求助]友元函数不能访问私有成员
只看楼主
zcx8532
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2005-11-9
 问题点数:0 回复次数:2 
[求助]友元函数不能访问私有成员

两个程序:
#include <iostream.h>
class Date
{
public:
friend ostream& operator <<(ostream &stream,Date &dat);
private:
int Year,Month,Day;
};
ostream& operator <<(ostream &ins,Date &dat)
{
ins<<dat.Year<<"/"<<dat.Month<<"/"<<dat.Day<<endl;
return ins;
}
////////////////////////2//////////////////
#include <iostream>
using namespace std;
class Pairs
{
public:
Pairs();

friend ostream& operator <<(ostream& ins, Pairs& second);
private:
int f; int s;
};

ostream& operator <<(ostream& ins, Pairs &second)
{
ins<<"("<<second.f<<","<<second.s<<")";
return ins;
}
第一个编译能通过,第二个却提示error C2248: 'f' : cannot access private member declared in class 'Pairs'
这是为什么呢?我觉得这两个是一样的啊

搜索更多相关主题的帖子: 函数 ins ostream dat 
2005-11-13 12:53
编程浪子
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-22
得分:0 
friend ostream& operator <<(ostream& ins, Pairs& second);

ostream& operator <<(ostream& ins, Pairs &second)

可能是加这两个地方出的错吧,你给对应上再试试,

喜欢IT技术的人士欢迎来到《IT精英族》QQ群作客:4135806
2005-11-13 15:05
qintian0125
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2009-9-28
得分:0 
#include <iostream.h>
class Pairs;
class Date
{
public:
friend ostream& operator <<(ostream &stream,Date &dat);
private:
int Year,Month,Day;
};
class Pairs
{
public:
Pairs();

friend ostream& operator <<(ostream& ins, Pairs& second);
private:
int f; int s;
};
ostream& operator <<(ostream &ins,Date &dat)
{
ins<<dat.Year<<"/"<<dat.Month<<"/"<<dat.Day<<endl;
return ins;
}
这样就可以了,在写一个主函数。
2009-11-09 21:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-33679-1-1.html




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

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