因此,我有一个带有两个派生类(deriv1和deriv2)的基类。
在deriv2类上,我需要从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); // <---- :((
    }
};


如何从另一个派生类访问私有成员?
我试图避免使用朋友功能,或避免将私人成员更改为公共成员……您有何建议?

谢谢! :)

最佳答案

您不能从deriv1访问deriv2私有数据成员。
您有两种选择可以克服这一问题:

进行吸气剂访问m_member1类中的deriv1

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


protected上使用m_member1,并使您的deriv2也源自deriv1

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

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


使用似乎与您的上下文一致的选项。

10-05 18:56