[英]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_member1
在deriv1
类。
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.