重载>>,学校课本的伤。!

Z85655664 2011-06-19 10:08:15
friend istream& operator>>(istream& is, Addr& a)
{
is>>a.name;
return is;
}

无法访问private成员。何解、
...全文
105 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcly1981826ly 2011-06-20
  • 打赏
  • 举报
回复
学习,,,,,,,,,,
南京浪人甲 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 z85655664 的回复:]

引用 1 楼 rcbblgy 的回复:

friend不是加在函数定义的地方,而要加在类定义里

class A
{
friend istream& operator>>(istream& is, Addr& a);


这个我了解。说说怎么不能访问,重载输出就行,输入不行,我用的是vc++2008express
[/Quote]

是嘛?回头我试试看。
Z85655664 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rcbblgy 的回复:]

friend不是加在函数定义的地方,而要加在类定义里

class A
{
friend istream& operator>>(istream& is, Addr& a);

[/Quote]
这个我了解。说说怎么不能访问,重载输出就行,输入不行,我用的是vc++2008express
AAA20090987 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 foxlovejiao 的回复:]

C/C++ code

friend istream& operator>>(istream& is, Addr& a)
{
is>>a.name;
return is;
}


这段全都放在类的声明里也可以的吧
[/Quote]

可以,但C++的类声明和类定义一般是分开写的
竞择 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rcbblgy 的回复:]
friend不是加在函数定义的地方,而要加在类定义里

class A
{
friend istream& operator>>(istream& is, Addr& a);

[/Quote]
++
fox448 2011-06-19
  • 打赏
  • 举报
回复

friend istream& operator>>(istream& is, Addr& a)
{
is>>a.name;
return is;
}

这段全都放在类的声明里也可以的吧
pathuang68 2011-06-19
  • 打赏
  • 举报
回复
通常的做法是:

// 友元函数在类中声明,前面必须加friend关键字
class A
{
friend istream& operator>>(istream& is, Addr& a);
};
// 定义该友元函数,通常在类的外面,而且前面必须不能加friend关键字
istream& operator>>(istream& is, Addr& a)
{
// ...
}


注意:
1. 一个类友元函数不是该类的成员函数,因此,友元函数内部不能使用this指针
2. 友元函数无传递性。即一个类的友元函数,缺省地,不是该类的子类的友元函数
無_1024 2011-06-19
  • 打赏
  • 举报
回复
不要用using namespace std;
用using std::cin;
using std::istream;
using std:ostream;
zicheng_lin 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rcbblgy 的回复:]

friend不是加在函数定义的地方,而要加在类定义里

class A
{
friend istream& operator>>(istream& is, Addr& a);

[/Quote]
++
rcbblgy 2011-06-19
  • 打赏
  • 举报
回复
friend不是加在函数定义的地方,而要加在类定义里

class A
{
friend istream& operator>>(istream& is, Addr& a);

64,648

社区成员

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

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