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

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

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

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

最佳答案
它不优雅,但这可能对你有用:

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!
    }
};

转载注明原文:C:允许访问受保护的类成员而不是私有成员 - 代码日志