一个关于友元函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:31:45
class AA
{
int a;
public:
friend void show() {cout<<a;}
};

这样一段代码编译报错。
error C2326: 'void __cdecl AA::show(void)' : function cannot access 'AA::a'

请问是什么问题?

你的友元函数必须带上参数才行,友元函数不是类的成员函数,它并不知道其中的“a”是什么。这样改:

class AA
{
int a;
public:
AA(){a = 0;} // 别忘初始化!
friend void show(AA aa) {cout<<aa.a;}
};

主函数里可以这样:
main()
{
AA aa;
show(aa);
return 0;
}

快试试吧……

AA的a是私有的,当然不可访问拉。