C++ 访问从派生 class 到另一个派生 class 的私有成员(两者具有相同的基数 class)

C++ Access private member from a derived class to another derived class (both have the same base class)

所以我有一个基础 class 和两个派生的 classes(deriv1 和 deriv2)。 在 deriv2 class 上,我需要从 deriv1 访问一个私有成员... 我该怎么做?

示例代码:

    class base
    {
    private:

    public:
        base() {};
        ~base() {};
    };

    class deriv1 : public base
    {
    private:
        int m_member1;
    public:
        deriv1() {};

        ~deriv1() {};
    };

    class deriv2 : public base
    {
    private:
        int m_member2;
    public:
        deriv2() {};

        ~deriv2() {};
    int sum_members_because_yes(void)
    {
        return (deriv1::m_member1 + m_member2); // <---- :((
    }
};

如何从另一个派生的 class 访问私有成员? 我试图避免使用友元函数,或将私有成员更改为 public... 你有什么建议?

谢谢! :)

您无法从 deriv2 访问 deriv1 个私有数据成员。
你有两种选择来克服这个问题:

执行 getter 以在您的 deriv1 class 中访问您的 m_member1

class deriv1 : public base
{
private:
    int m_member1;
public:
    int get_member1() const { return m_member1; }
[...]
}

m_member1 上使用 protected 并使您的 deriv2 也派生自 deriv1.

 class deriv1 : public base
 {
 protected:
   int m_member1;
   [...]
 }

class deriv2 : public base, public deriv1
{ 
  [...]
}

使用与您的上下文相符的选项。