【发布时间】:2014-06-19 20:40:27
【问题描述】:
这是对我正在使用的内容的过度简化,因为有很多代码。所以我有两节课。 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;
};
【问题讨论】:
-
如果没有更好的选择,您应该使用朋友作为最后的解决方案。您可以检查是否适用更好的设计。
标签: c++