新手急问:如何调用嵌套类的成员???
class A
{
int p
};
class B
{
int m;
A *a;
};
如何通过类B 来访问类A的成员p? 谢谢大家了啊
[解决办法]
在你的如下类声明中:
class A
{
int p;
};
class B
{
int m;
A *a;
};
如果B类能够通过指针成员a去随意访问A的成员p,那么类就是失去了封装性,这是支持OOP的语言特性所不允许的!
要使B类的愿望可以实现,则必须经过A类的"许可",这才不失封装的特性!那就是在A类中声明其友员类,例如:
class B;//B类的预引用;
class A
{
int p;
public:
A(){ p = 88;};//演示用!
friend class B;//声明B类为本类的友员类!
};
class B
{
int m;
A *a;
public:
//为你的B类润色,以利于演示:
B(){ *a = new A;}
~B(){ delete a;}
void fish6344(void)
{
cout << "A类成员p = " << a->p << endl;
}
};
int main()
{
B b;
b.fish6344(); //"A类成员p = 88"
_PAUSE;
return 0;
}
上述程序行为良好,足以满足你的需求!