注册 登录
编程论坛 C++教室

[求助]友元函数不能访问私有成员

zcx8532 发布于 2005-11-13 12:53, 1342 次点击

两个程序:
#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'
这是为什么呢?我觉得这两个是一样的啊

2 回复
#2
编程浪子2005-11-13 15:05
friend ostream& operator <<(ostream& ins, Pairs& second);

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

可能是加这两个地方出的错吧,你给对应上再试试,
#3
qintian01252009-11-09 21:20
#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;
}
这样就可以了,在写一个主函数。
1