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

萌新求助,关于友元

唐三藏 发布于 2020-10-22 22:02, 1386 次点击
只有本站会员才能查看附件,请 登录


我想让1个类中的某个函数,访问另一个类中的私有成员。我都设置友元函数了,为什么还是报红线呢?
2 回复
#2
rjsp2020-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
seawaycao2020-10-28 22:46
版主讲解的很透彻,学习了!
1