如何解决上载以与私有继承接口
我有以下情况
class Interface {
};
class Complicatedobject : public Interface {
};
,我想给出Complicatedobject的简化版本,同时仍然提供接口。我在想私有继承,例如
class Simplified : private Complicatedobject {
};
但是,当然,我不能轻易地将其升级为类似的接口
int main() {
Interface* p = new Simplified();
}
解决方法
作曲是唯一的方法吗?
向上投射也无法用于合成。从类外的角度来看,私有继承是有效的组合。
还是有一些解决方法?
不是隐式的,但是您可以提供一组成员函数,这些成员函数返回对基的引用。
更根本的改变-但更明智-改变前提并使用虚拟继承:
class Interface {};
class ComplicatedObject : public virtual Interface {};
class Simplified : private ComplicatedObject,public virtual Interface {};
这也可以在没有虚拟继承的情况下完成,但是在那种情况下,您将需要重新实现所有虚拟函数并明确地委派给私有库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。