内部类访问外部几个级别

时间:2014-02-21 18:21:07

标签: c++ inner-classes

VS 2010中的以下版本:

class C1
{
private:
    enum E {E_VAL};
    static void methC1() {}

public:
    class C2
    {
    public:
        class C3
        {
        public:
            void methC3() 
            {
                int a=E_VAL; // this surprised me
                methC1();    // and this too
            }
        };
    };
};

int main() 
{
    C1::C2::C3 obj;
    obj.methC3();
}

这是标准吗?我看到这个other SO post,答案将内部课程与朋友课程进行比较,但朋友的朋友不是朋友,所以想知道标准是什么。

1 个答案:

答案 0 :(得分:4)

标准说(draft n3337, 11.7 [class.access.nest]):

  

1 嵌套类是成员,因此具有与任何其他成员相同的访问权限。成员   封闭类对嵌套类的成员没有特殊访问权限;通常的访问规则(第11条)   应遵守。 [...]

这就是它。 C3具有与methC1相同的访问权限。