oLe*_*Len 11 c++ oop inheritance qt
考虑以下:
类B从类中公开继承A.两者都在库中提供,我无法修改它们.
我想实现一个Foo派生自的类B,但我想允许用户Foo只使用A和Foo(而不是B)的公共函数.对于他们来说,Foo继承自己是不相关的B,这原则上是我无法避免的实现细节.
因此,原则上我想Foo公开继承A,但私下来B.
是否有一些C++中的构造允许我这样做?
我必须补充说,虚拟继承不是一个选项,因为A在我的例子中,派生自QObject(如果QObject是直接派生的话,请参阅使用*virtual*multiple inheritance是否安全?).
(注意:对于感兴趣的人:就我而言,A是QWindow和B是Qt3DExtras::Qt3DWindow)
你在c ++中最接近的是:
class Foo : private B {
public:
using A::foo; // Expose function foo in Foo's API.
using A::bar;
operator A&() { return *this; } // Implicit conversion to `A` when needed.
operator A const&() const { return *this; }
};
Run Code Online (Sandbox Code Playgroud)