成员函数不是已经声明 友元了吗 为什么仍然不能访问private里的数据的
麻烦各位看看 谢谢了!
换成 friend class goodgay;
你的class结构比较特殊,是相互引用。
如果先定义A,则B未定义,B的作用域不可用,B作用域下的成员函数就是非法的,不可用作友元。
如果先定义B,则A的类未定义,B不可以用A类对象做成员函数,但可以用A类的指针。
所以如果B的成员函数要引用A的私有成员,必须让class B成为class A的友元。
struct B;
struct A
{
private:
// friend struct B; //可以,B的成员函数都可以引用A类对象的私有成员。
friend void B::C(); //非法作用域
int b = 0;
};
struct B
{
void C();
private:
A p;
};
void B::C()
{
int d = p.b;
}
int main()
{
B gg;
gg.C();
return 0;
}