【发布时间】:2017-04-13 04:08:12
【问题描述】:
考虑以下几点:
类 B 公开继承自类 A。两者都在库中提供,我无法修改它们。
我想实现一个派生自B 的类Foo,但我想允许Foo 的用户仅使用A 和Foo 的公共函数(而不是来自B)。对他们来说,Foo 继承自 B 是无关紧要的,原则上这是我无法避免的实现细节。
所以,原则上我希望 Foo 公开继承自 A,但私下继承自 B。
C++ 中是否有一些结构可以让我这样做?
我必须补充一点,虚拟继承不是一个选项,因为在我的例子中,A 派生自 QObject(请参阅Is it safe to use *virtual* multiple inheritance if QObject is being derived from DIRECTLY?)。
(注意:对于感兴趣的人:在我的情况下,A 是 QWindow 和 B 是 Qt3DExtras::Qt3DWindow)
【问题讨论】:
-
struct foo : A { B b; }工作吗? -
只是不要记录你的类是从 B 派生的。说它是从 A 派生的。这不是阻止确定的用户想要访问 B 的方法,但没有其他方法。跨度>
标签: c++ qt oop inheritance