此代码编译关于获取封闭类的保护构件MSVC /克++:嵌套类:从嵌套保护的类
class A{
protected:
int i;
class B{
public:
A* a;
B(A* a_)
:a(a_){
}
void doSomething(){
if (a)
a->i = 0;//<---- this part
}
};
public:
A()
:i(0){
}
};
正如你可以看到,B能存取封闭类的“被保护的”部分,虽然它没有被宣布为朋友。
这是标准(符合标准)行为吗?
我有时会使用这个特性,但我不记得有规则说嵌套的受保护类应该自动访问所有包含类的受保护数据。
杜佩尔问题。不过,我现在不会去寻找原作。 :) – 2010-08-21 15:17:31