关于类的问题
来源:百度知道 编辑:UC知道 时间:2024/06/06 02:55:55
在C++中定义两个类A,B,其中A的一个对象是B的私有成员变量.现在想要用B的友元函数调用B类中A类的对象的成员,该如何编写程序??
不行呀,程序编译有错:“error C2248: 'n' : cannot access private member declared in class 'A'”
不行呀,程序编译有错:“error C2248: 'n' : cannot access private member declared in class 'A'”
不好意思是我搞错了,应该是在B的内部才能够访问A的成员n
在外部是不能访问类的私有成员的。
B b;
b.a.n = 0; //这当然不行,因为a为B的私有成员,不能在外部访问的o(∩_∩)o
要在“外部”比如在某个函数中访问B的私有成员,又得定义某个函数Fun为B的友元函数才行。
比如下面:
——————————————————————————————
如果调用的是A的public成员,不需要友元。
如果调用的是A的非public成员,可以在A里面定义B为A的友元,这样B就可以任意访问A的所有成员了。
class B;
class A
{
friend class B;
public:
void OK()
{
n = 1;
}
private:
int n;
} ;
void C();
class B
{
friend void C();
B()
{
a.n = 0;//可以访问a的n成员
}
private:
A a;
} ;
void C()
{
B b;
b.a.OK();//可以访问A的公开成员函数OK,A的n还是不能访问,因为A没有设定C为A的友元
}