编程论坛
注册
登录
编程论坛
→
C++教室
萌新求助,关于友元
唐三藏
发布于 2020-10-22 22:02, 1386 次点击
只有本站会员才能查看附件,请
登录
我想让1个类中的某个函数,访问另一个类中的私有成员。我都设置友元函数了,为什么还是报红线呢?
2 回复
#2
rjsp
2020-10-23 08:46
首先,要贴
代码
,而
非
贴图;
其次,大家只看编译结果,而所谓的“弱智感知”只是给你一个参考。
当编译器分析到 friend void Goodgay::visit02(); 时,它知道 Goodgay 是个什么东西吗?所以这一句时它就错了。
举个例子:
class A
{
private:
int value;
};
class B
{
public:
void fun( A& a )
{
a.value = 0;
}
};
要想编译通过,要么简单点儿,直接在 class A 中添加
friend class B
;
若想只让 B::fun 成为友元,得:
class A;
class B
{
public:
void fun( A& a );
};
class A
{
private:
int value;
friend void B::fun( A& a );
};
void B::fun( A& a )
{
a.value = 0;
}
#3
seawaycao
2020-10-28 22:46
版主讲解的很透彻,学习了!
1