请教,怎么才能让某类的私有成员能被“其友元类的子类”直接访问

请问,如何才能让某类的私有成员能被“其友元类的子类”直接访问?
举例:

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 );//我想让这里可以这样做
    }
};

------解决方案--------------------
引用:
我之前看了这个博客:
http://blog.****.net/feiyinzilgd/article/details/6302481
,里面的解决方法和你说的一样。然后博客下面的回复有两个人在笑他,我还以为有其他更好的办法呢。


我看了, 笑他不是说用法不对, 而是他的那个标题起的有点过了. 这个只能算 "绕过", 不能算 "解决" 吧.
------解决方案--------------------
引用:
你指的是这样:

class A 
{
protected:
     int abc;
     friend class B;
};


试过了,这样是不行的。

啊,是我看的不仔细,sorry。只能绕道走,就像 #5 写那样。