读书人

新手急问:怎么调用嵌套类的成员?

发布时间: 2012-03-22 17:43:57 作者: rapoo

新手急问:如何调用嵌套类的成员???
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;
}

上述程序行为良好,足以满足你的需求!

读书人网 >C++

热点推荐