[英]Access protected function from derived class
我有以下典型场景,其中我想在子类中隐藏实现细节,并通过接口公开它:
template <typename Derived>
class Interface
{
public:
void a()
{
static_cast<Derived*>(this)->_a();
}
};
class Implementation : public Interface<Implementation>
{
protected:
void _a()
{
/*
...
*/
}
};
我想我理解为什么这行不通,并且知道将类Interface
声明为Implementation
朋友可以解决它,但是当涉及到更复杂的层次结构(例如多个接口和各种继承级别)时(我的实际情况是这样) ),事情变得非常混乱。
我想避免在每个实现接口的类中声明friend class Interface<Implementation>
。
是否有替代好的解决方案来解决此问题?
谢谢!
如何使用虚函数和多态性?
在子类中创建一个对象,然后将其重新分配给接口类的指针或引用。 然后在您的接口类中创建一个纯虚函数,并在您的子类中对其进行定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.