【发布时间】:2014-06-18 10:26:26
【问题描述】:
这就是我想要做的:
class A
{
friend class C (and all of C's derived classes)
public:
void DoAThing() { mpMyC->DelegateResponsibility(myB); }
private:
class B
{
};
B mMyB;
C* mpMyC;
};
class C
{
// No problem here- C can see B
virtual void DelegateResponsibility(const A::B& necessaryInfo);
};
class D: public C
{
// Uh-oh- we don't inherit friendship
virtual void DelegateResonsibility(const A::B& necessaryInfo);
};
简而言之,我在 A 中有一个私有嵌套类,因为它是 A 的一个实现细节。但是,我想将 A 的一些职责委托给 C 和 C 的派生类以获得一些多态行为。我想避免每次有人从 C 派生时都必须添加朋友类行。为派生朋友类提供的标准解决方法是“只需向您的基类添加受保护的访问器函数并为派生成员覆盖它”但只有帮助访问 A 类的私有成员,而不是私有范围的类。有没有办法解决这个问题?
【问题讨论】:
标签: c++ inheritance polymorphism friend delegation