2015-07-05 164 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 
{ 
    [...] 
} 

使用看起來與您的上下文一致的選項。

相關問題