2015-07-05 4 views
0

Итак, у меня есть базовый класс с двумя производными классами (производными и производными). В классе deriv2 мне нужно получить доступ к частному члену из производного1 ... Как это сделать?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

'ded2' не имеет причины содержать поля из' производного1'. Что вы пытаетесь моделировать? – Quentin

ответ

1

Вы не можете получить доступ к deriv1 частным данным от deriv2.
У вас есть два варианта, чтобы преодолеть что:

Do поглотитель, чтобы получить доступ к вашим 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 
{ 
    [...] 
} 

Используйте вариант, который, кажется, чтобы быть когерентным с контекстом.