小编Rob*_*own的帖子

嵌套类的嵌套类的访问权限

在C++中,嵌套类具有对封闭类的所有成员的访问权限.这是否也适用于嵌套类的嵌套类?

这段代码

#include <iostream>

class A
{
public:
    class B
    {
    public:
        B() { std::cout << A::x << std::endl; }

        class C
        {
        public:
            C() { std::cout << A::x << std::endl; }

        };

    };

private:
    static const int x { 0 };

};

int main()
{
    A::B b;

    A::B::C c;
}
Run Code Online (Sandbox Code Playgroud)

在g ++ 7.2上编译时没有警告.但是,我不清楚这是否符合标准.标准草案(N4727 14.7)说:

嵌套类是成员,因此具有与任何其他成员相同的访问权限.

但是,在上面的示例C中不是其成员A,它是成员的成员.这里的标准模棱两可吗?g ++行为是否可移植?

c++ inner-classes language-lawyer

8
推荐指数
1
解决办法
135
查看次数

标签 统计

c++ ×1

inner-classes ×1

language-lawyer ×1