Jon*_*Jon 40
友谊不是在C++中继承的.
标准说(ISO/IEC 14882:2003,第11.4.8节):
友谊既不是遗传也不是传递.
您可以在父级中创建(静态)受保护的方法,以允许您执行此类操作.
class MyFreind
{
private:
int m_member;
friend class Father;
};
class Father
{
protected:
static int& getMyFreindMember(MyFreind& io_freind) { return io_freind.m_member; }
};
class Son : public Father
{
public:
void doSomething(MyFriend& io_freind)
{
int& friendMember = getMyFreindMember(io_freind);
// ....
} // ()
};
Run Code Online (Sandbox Code Playgroud)
然而,这会绕过封装,因此您可能需要再次查看您的设计.