这是对我正在使用的内容的过度简化,因为有很多代码。所以我有两个班级。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)
当你写的时候friend class X;,friend class Xx;这意味着 X 和 Xx 的成员函数可以访问 A 类的私有成员和受保护成员。似乎你想要相反。为此,您应该添加friend class AaX 和 Xx 类。
| 归档时间: |
|
| 查看次数: |
1634 次 |
| 最近记录: |