2015-07-05 124 views
0

因此,我有一个具有两个派生类(deriv1和deriv2)的基类。 在deriv2类我需要从deriv1访问私人成员... 我该如何做到这一点?C++从派生类访问私有成员到另一个派生类(两者具有相同的基类)

示例代码:

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); // <---- :((
    } 
}; 

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

谢谢! :)

+0

您只能访问派生类中的公共或受保护成员。 – marekful

+0

'deriv2'没有理由包含来自'deriv1'的字段。你想要建模什么? – Quentin

回答

1

您不能访问deriv1deriv2私人数据成员。
你有两个选择来克服:

做一个getter访问您m_member1deriv1类。

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

m_member1使用protected,让您的deriv2deriv1的。

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

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

使用看起来与您的上下文一致的选项。

相关问题