我有一个类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
它们?