请教,怎么才能让某类的私有成员能被“其友元类的子类”直接访问
请问,如何才能让某类的私有成员能被“其友元类的子类”直接访问?
举例:
请问C++中是否有什么办法可以直接这样做?
------解决方案--------------------
友元是没法继承的.
只能把访问 A 成员的方法放在 B 类中. D, C 再调用 B 的方法来进行访问.
如果 B 是从 A 继承的, 还可以使用 using 语句来. 你这个也不是.
------解决方案--------------------
友元并不能被继承,所以是无法直接这样做的,可以由B提供一个成员函数,例如:
------解决方案--------------------
我看了, 笑他不是说用法不对, 而是他的那个标题起的有点过了. 这个只能算 "绕过", 不能算 "解决" 吧.
------解决方案--------------------
啊,是我看的不仔细,sorry。只能绕道走,就像 #5 写那样。
举例:
class B;
class A
{
int abc;
friend class B;
};
class B
{
};
class C : public class B
{
public:
A m_a;
void Fun()
{
m_a.abc=1;//我想让这里可以这样做
}
};
class D :public C
{
public:
A m_aaa;
void Fun1()
{
m_aaa.abc=1;//我想让这里可以这样做
}
};
请问C++中是否有什么办法可以直接这样做?
------解决方案--------------------
友元是没法继承的.
只能把访问 A 成员的方法放在 B 类中. D, C 再调用 B 的方法来进行访问.
如果 B 是从 A 继承的, 还可以使用 using 语句来. 你这个也不是.
------解决方案--------------------
友元并不能被继承,所以是无法直接这样做的,可以由B提供一个成员函数,例如:
class B
{
public :
void proxy( A& a )
{
a.abc = 1;
}
};
class C : public B
{
public:
A m_a;
void Fun()
{
proxy( m_a );//我想让这里可以这样做
}
};
------解决方案--------------------
我看了, 笑他不是说用法不对, 而是他的那个标题起的有点过了. 这个只能算 "绕过", 不能算 "解决" 吧.
------解决方案--------------------
啊,是我看的不仔细,sorry。只能绕道走,就像 #5 写那样。