我有以下代码:
class Base
{
private:
class NestedBase
{
public:
void Do() {}
};
public:
NestedBase nested;
};
int main()
{
Base b;
b.nested.Do(); // line A compiles
Base::NestedBase instance; // line B doesn't compile
}
NestedBase
class 是 的私有嵌套类Base
,因此 B 行不编译似乎很自然。但是,另一方面,变量b
具有公共成员nested
,我可以Do()
从外部调用它的方法Base
(如 A 行)。在这种情况下,规范对私有嵌套类(或其成员)的访问的精确规则是什么?标准对此有何规定?