C++ 访问从派生 class 到另一个派生 class 的私有成员(两者具有相同的基数 class)
C++ Access private member from a derived class to another derived class (both have the same base class)
所以我有一个基础 class 和两个派生的 classes(deriv1 和 deriv2)。
在 deriv2 class 上,我需要从 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); // <---- :((
}
};
如何从另一个派生的 class 访问私有成员?
我试图避免使用友元函数,或将私有成员更改为 public... 你有什么建议?
谢谢! :)
您无法从 deriv2
访问 deriv1
个私有数据成员。
你有两种选择来克服这个问题:
执行 getter 以在您的 deriv1
class 中访问您的 m_member1
。
class deriv1 : public base
{
private:
int m_member1;
public:
int get_member1() const { return m_member1; }
[...]
}
在 m_member1
上使用 protected
并使您的 deriv2
也派生自 deriv1
.
class deriv1 : public base
{
protected:
int m_member1;
[...]
}
class deriv2 : public base, public deriv1
{
[...]
}
使用与您的上下文相符的选项。
所以我有一个基础 class 和两个派生的 classes(deriv1 和 deriv2)。 在 deriv2 class 上,我需要从 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); // <---- :((
}
};
如何从另一个派生的 class 访问私有成员? 我试图避免使用友元函数,或将私有成员更改为 public... 你有什么建议?
谢谢! :)
您无法从 deriv2
访问 deriv1
个私有数据成员。
你有两种选择来克服这个问题:
执行 getter 以在您的 deriv1
class 中访问您的 m_member1
。
class deriv1 : public base
{
private:
int m_member1;
public:
int get_member1() const { return m_member1; }
[...]
}
在 m_member1
上使用 protected
并使您的 deriv2
也派生自 deriv1
.
class deriv1 : public base
{
protected:
int m_member1;
[...]
}
class deriv2 : public base, public deriv1
{
[...]
}
使用与您的上下文相符的选项。