因此,我有一个带有两个派生类(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); // <---- :((
}
};
如何从另一个派生类访问私有成员?
我试图避免使用朋友功能,或避免将私人成员更改为公共成员……您有何建议?
谢谢! :)
最佳答案
您不能从deriv1
访问deriv2
私有数据成员。
您有两种选择可以克服这一问题:
进行吸气剂访问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
{
[...]
}
使用似乎与您的上下文一致的选项。