請考慮以下內容:能在C++中隱藏部分繼承層次結構嗎?
類B
公開繼承A
類。兩者都在庫中提供,我不能修改它們。
我想實現一個類Foo
從B
派生的,但我想允許的Foo
用戶使用的(來自B
不)A
和Foo
唯一的公共職能。對於他們而言,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; 「工作? – Danh
只是不記錄你的類派生自B.說它來自A.這不是一種方法來阻止一個確定的用戶想要訪問B,但沒有其他的東西。 –