簡體   English   中英

C ++將私有成員從派生類訪問到另一個派生類(兩者都具有相同的基類)

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

因此,我有一個帶有兩個派生類(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); // <---- :((
    }
};

如何從另一個派生類訪問私有成員? 我試圖避免使用朋友功能,或避免將私人成員更改為公共成員…… 您有何建議?

謝謝! :)

您不能從deriv2訪問deriv1私有數據成員。
您有兩種選擇可以克服這一問題:

做一個getter訪問您m_member1deriv1類。

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
{ 
  [...]
}

使用似乎與您的上下文一致的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM