纯虚拟朋友班

时间:2015-11-23 21:20:34

标签: c++ polymorphism friend pure-virtual

我有一个类A,它有一个指向纯虚拟类B实例的指针。类C派生自B,并将自动指向A(其父级),并需要访问其成员。这可以通过在类friend class C中添加A来实现,但是对于将从B派生的每个类都需要这样做。

代码示例:

class A
{
public:
    friend class B; // This does not allow derived classes to be friends
    friend class C; // Now derived class B has access to `DoDomething`, but then this is needed for every single derived class

private:
    void DoDomething();
};


class B
{
    virtual void Tick() = 0;

protected:
    A* m_pointerToA; // <- is being set upon creating automatically
};


class C : public class B
{
    virtual void Tick()
    {
        m_pointerToA->DoSomething();
    }
};

是否有办法让B中的所有派生类都可以访问他们所指向的类A的私有成员和受保护成员,而无需为每个派对添加friend class X它们?

0 个答案:

没有答案