这是我正在使用的内容的过度简化,因为有很多代码。所以我有两个类。 A 是 Aa 的父级,X 是 Xx 的父级。我将父类 A 设置为 X 和 Xx 的友元类,以便我可以访问其私有(private)变量和 protected 变量。现在因为 Aa 是 A 的子级并继承自 A,为什么我无法访问 X 或 Xx 的 protected 成员? A 是一个 friend 类,所以这不应该起作用吗?我总是收到一条错误消息,指出 barA
是 X 的 protected 成员。
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;
};
最佳答案
当你写friend class X;
和friend class Xx;
时,意味着X和Xx的成员函数可以访问A类的私有(private)和 protected 成员。看来你想要相反。为此,您应该在 X 类和 Xx 类中添加友元类 Aa
。
关于c++ - 从单独的类访问 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23440396/