c++ - 从单独的类访问 protected 成员

标签 c++

这是我正在使用的内容的过度简化,因为有很多代码。所以我有两个类。 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/

相关文章:

c++ - 如何从 C++ 代码中获取项目名称?

c++ - 正确添加到 vector

c++ - c语言makefile错误:Undefined symbols for architecture x86_64: "_main",引用自: 'main'

c++ - boost、c++ 和 fatal error : boost/random/uniform_int_distribution. hpp:没有这样的文件或目录

c++ - 为什么枚举类优于普通枚举?

c++ - float 的最小正值?

c++ - 找到40亿以下所有质数的最快方法

c++ - 如何使用 Python 和/或 Lua 编写可编写脚本的讨厌的 C++ 程序?

c++ - 使用 3D 声音时,我听不出前后位置的区别

c++ - 如何旋转一个物体使其面向另一个物体?