C++的朋友继承?

SSi*_*ht3 34 c++ subclass friend

子类是否继承,主类的朋友关联(主类'自己和其他类与主类相关)?

或者换句话说,继承如何应用于friend关键字?

扩展:如果没有,有没有办法继承友谊?

我遵循Jon的建议来提出设计问题:
C++类设计问题

Jon*_*Jon 40

友谊不是在C++中继承的.

标准说(ISO/IEC 14882:2003,第11.4.8节):

友谊既不是遗传也不是传递.

  • @ SSight3:不,你需要明确地在层次结构朋友中建立所有的经典(可能是在源代码预处理器的帮助下).如果您要解决特定问题,请明确询问. (2认同)

bal*_*lki 8

朋友只适用于您明确使其成为朋友而没有其他类的类.

http://www.parashift.com/c++-faq-lite/friends.html#faq-14.4


sel*_*rer 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)

然而,这会绕过封装,因此您可能需要再次查看您的设计.