所以我有一个带有两个派生类(deriv1和deriv2)的基类。 在deri2类中,我需要从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); // <---- :((
}
};
如何从其他派生类访问私有成员? 我试图避免使用朋友功能,或将私人会员改为公开...... 你有什么建议?
谢谢! :)
答案 0 :(得分:1)
您无法从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
{
[...]
}
使用似乎与您的背景相符的选项。