C++:允许访问类的受保护成员而不是私有成员

Jal*_*for 4 c++ class

我知道你可以通过继承来做到这一点,但你的意思是使用继承,除了'是'的情况.我也知道有朋友,但他们也允许访问私人会员.

有没有办法做到这一点(允许访问受保护的类成员而非私人成员)?

为了改写这个问题,我有1级和2级.我希望第二级能够访问第1类的受保护和公共成员,但不是它的私有成员.我该怎么做?

Oli*_*rth 5

它不优雅,但这可能对你有用:

class B;

class A {
protected:
    int x;
private:
    int y;
};

class A_wrapper : public A {
    friend B;
};


class B {
public:
    A_wrapper a;
    int foo() {
        a.x;   // Ok
        a.y;   // Compiler error!
    }
};
Run Code Online (Sandbox Code Playgroud)