从单独的类访问受保护的成员

MrP*_*lot 2 c++

这是对我正在使用的内容的过度简化,因为有很多代码。所以我有两个班级。A 是 Aa 的父级,X 是 Xx 的父级。我将父 A 设置为 X 和 Xx 的朋友类,以便我可以访问其私有变量和受保护变量。现在因为 Aa 是 A 的孩子并从 A 继承,为什么我不能访问 X 或 Xx 的受保护成员?A 是一个朋友类,所以这不应该工作吗?我总是收到一条错误消息,说它barA是 X 的受保护成员。

class A {
    friend class X;
    friend class Xx;
public:
    void FooA();
protected:
    int fooA;
};

class Aa: public A {
public:
    voif Fooa();
private:
    int fooa;
};

class X {
public:
    void BarA();
protected:
    int barA;
};

class Xx: public X {
public:
    void Bara();
private:
    int bara;
};
Run Code Online (Sandbox Code Playgroud)

Moh*_*ain 5

当你写的时候friend class X;friend class Xx;这意味着 X 和 Xx 的成员函数可以访问 A 类的私有成员和受保护成员。似乎你想要相反。为此,您应该添加friend class AaX 和 Xx 类。