关于类的问题

来源:百度知道 编辑: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'”

不好意思是我搞错了,应该是在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的友元
}