简体   繁体   English

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

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

So I have a base class with two derived classes (deriv1 and deriv2). 因此,我有一个带有两个派生类(deriv1和deriv2)的基类。 On the deriv2 class I need to access a private member from deriv1... How can I do this? 在deriv2类上,我需要从deriv1访问私有成员...我该怎么做?

Sample code: 样例代码:

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

How can I access a private member from another derived class? 如何从另一个派生类访问私有成员? I was trying to avoid using friend functions, or changing the private member to public... What do you advice? 我试图避免使用朋友功能,或避免将私人成员更改为公共成员…… 您有何建议?

Thank you! 谢谢! :) :)

You cannot access deriv1 private data members from deriv2 . 您不能从deriv2访问deriv1私有数据成员。
You have two options to overcome that : 您有两种选择可以克服这一问题:

Do a getter to access your m_member1 in your deriv1 class. 做一个getter访问您m_member1deriv1类。

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

Use protected on m_member1 and make your deriv2 also derived from deriv1 . m_member1上使用protected ,并使您的deriv2也从deriv1派生。

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

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

Use the option which seem to be coherent with your context. 使用似乎与您的上下文一致的选项。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C++ 从基类指针访问派生类成员 - C++ Access derived class member from base class pointer 从基类继承的C ++公共方法无法访问派生类中的私有成员变量 - C++ public method inherited from base class can not access private member variable in derived class 覆盖派生类C ++中基类私有成员的行为 - Override the behavior of base class private member in a derived class, C++ 基类可以访问 C++ 中的派生类受保护成员吗? - Can a base class access a derived class protected member in c++? 当两者具有相同的变量名称时,从派生类访问基类成员变量地址 - Accessing base class member variable address from derived class when both have the same variable name 如何从派生类访问派生基成员?(在C ++中) - How can I access derived base member from derived class?(in C++) 从派生类到基类的C ++成员初始化 - C++ member initialization from derived class to base class 访问派生成员而不是派生 class 中具有相同名称的基成员 - Access derived member instead of base member with same name in derived class C ++派生类重写基类的成员与另一个派生类? - C++ Derived class overriding member of base class with another derived class? C ++:创建可以访问基类私有变量的派生类吗? - C++: Creating derived class that has access to private variables of base?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM