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

时间:2015-07-05 10:58:43

标签: c++ inheritance private-members

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

如何从其他派生类访问私有成员? 我试图避免使用朋友功能,或将私人会员改为公开...... 你有什么建议?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

您无法从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
{ 
  [...]
}

使用似乎与您的背景相符的选项。

相关问题