相关疑难解决方法(0)

C++嵌套类可访问性

给出以下代码而不考虑两个类之间的友谊:

class OutSideClass
{
...
public:
    int i_pub;
protected:
    int i_pro;
private:
    int i_pri;

    class InSideClass
    {
        ...
        public:
            int j_pub;
        protected:
            int j_pro;
        private:
            int j_pri;
    };
};
Run Code Online (Sandbox Code Playgroud)

问题1> OutSideClass是否只能访问InSideClass的公共成员

问题2> InSideClass是否可以访问OutSideClass的所有成员

如果我的理解不正确,请纠正我.

c++ oop

26
推荐指数
1
解决办法
2万
查看次数

嵌套类:从嵌套的受保护类访问受保护的类的成员

此代码在msvc/g ++上编译:

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){
    }
};
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,B可以访问封闭类的"受保护"部分,尽管它未被声明为朋友.

这是标准(符合标准)的行为吗?

我有时使用此功能,但我不记得规则说嵌套的受保护类应该自动访问封闭类的所有受保护数据.

c++

18
推荐指数
2
解决办法
5353
查看次数

标签 统计

c++ ×2

oop ×1