读书人

嵌套类与外围类的私有成员,该如何解决

发布时间: 2013-01-26 13:47:04 作者: rapoo

嵌套类与外围类的私有成员
嵌套类以外围类对象为自己的私有数据成员,难道就能通过这个对象去访问外围类对象的私有成员?

#include <iostream>

class test
{
public:
class item;
private:
int i;
test():i(10) {}
void f()
{
std::cout<<i+1<<std::endl;
}
};
class test::item
{
test a;
public:
void print()
{
std::cout<<a.i<<std::endl;//能访问私有成员?
a.f(); //同上
}
};
int main()
{
test::item b;
b.print();
return 0;
}

[解决办法]
差点被搞晕了。
当然可以。有点和有元差不多。但item要通过test来访问。
[解决办法]
同意楼上,相当于友类了吧。
[解决办法]
item是test的一部分,就跟test的成员函数访问私有变量差不多。
[解决办法]
引用:
首先这里并没有声明友类。按你们说的,但显然不是因为item是嵌套类所以相当于友元,又是否是因为嵌套类中用了外围类的对象作为子对象,才有此状况?
可不可以这样说:若一个类用另一个类对象作为子对象,那么这个类就是子对象所在类的友类?


其实,类的基本概念理解了,就行了。这个属于类最基本的概念(类的成员函数可以访问private变量)里的。
只是初看起来有点陌生罢了。

读书人网 >C++

热点推荐