雖然我使用MFC,但我相信這主要是一個C++問題。如何在具有相同父項的兩個類之間共享代碼?
我有CResizingDialog
派生自CDialog
,它是應用程序中所有對話框的基類。它使他們能夠根據目標屏幕大小自動調整大小(你猜對了)。 CResizingDialog通過覆蓋CDialog的幾個虛函數來實現這一點,包括OnSize()
,OnInitDialog()
,OnPaint()
。到目前爲止,很好,很好。
現在我添加一個屬性表/頁面,它也需要相同的調整大小功能,但是我不能使用CResizingDialog作爲我的屬性頁面的基類。這意味着我將需要一個新的基類,比如從CPropertyPage
派生的CResizingPage,它將包含與CResizingDialog相同的功能。
但是,調整對話框及其控件的代碼完全相同。有什麼辦法可以重用CResizingDialog嗎?我從來沒有使用多重繼承,這會有幫助嗎?
如果您想重新使用調整大小的代碼,您必須從CResizingDialog中提取調整大小的代碼並在對話框/屬性頁面實現中重用。多繼承不會在這裏幫助,主要是由於MFC的管道宏。 – IInspectable
研究裝飾設計模式。 – imreal
我不是MFC,所以如果這只是C++而已。 C++支持多重繼承。我有一個我正在使用的系統:想象一下A類,B類:public A和class C:public A.如果B可調整大小且C可調焦,則可以創建派生類D:public B,public C從B和C.爲什麼不繼承可調整大小? – Chemistpp