2016-09-10 93 views
-2

假設我有三個類A,B和C B類從類A繼承和繼承是私人而C級從乙繼承和繼承是公開的。現在,類A具有C類想要訪問的保護功能。那麼,什麼必須在B級來完成,以使該保護功能提供給C類C++多級繼承,多態性

這裏是鏈接到代碼:http://pastebin.com/9E2sLZzj

+1

如果你還沒有做它已經,那麼請花一些時間來閱讀[幫助頁面](http://stackoverflow.com/help),尤其是名爲[「的章節我能問什麼議題關於這裏?「](http://stackoverflow.com/help/on-topic)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。另請[請閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,完整和可驗證示例](http:// stackoverflow .COM /幫助/ MCVE)。 –

+0

當'B'私自從'A'繼承時,'A'的受保護成員在'B'中變爲私有。現在,當'C'從'A'繼承時,您想要訪問該私有成員。因此,您的問題會減少到找到一種方法來訪問我認爲不可用並且即使可用的子類中的私人成員也不是一個好主意。 –

回答

0

「使用」關鍵字,使繼承的類的成員可見,並且可以在其子類的範圍內解決。因此,要提供給B的子類的私有繼承成員:

class A { 

protected: 

    void foo() {} 
}; 

class B : private A { 

protected: 

    using A::foo; 
}; 

class C : public B { 

    void bar() 
    { 
     foo(); 
    } 
}; 
+1

只能回答​​代碼?請解釋它 –

+0

類'C'從'A'繼承而OP要'C'繼承'B' –

0

好,我得到了解決 此代碼片段將其插入到B級

int get(){ 
    return A::get(); 
} 

不知道以後的工作是什麼它雖然