2012-06-10 36 views
0

在我的項目中,我有一個父類CWnd,它是鏈下的類的基本win32窗口。然後用模板聲明創建這個類的實例,以便我可以有許多不同類型的窗口。通過類追加到父函數?

我再添加成員,像這樣:

void CChildWndClass::OnSize(HWND hWnd, UINT state, int nWidth, int nHeight) 
{ 
    // do something 
} 

的問題是,這些成員都是虛擬的。在某些事件中(即:OnDestroy),我想在每個窗口類中執行代碼,而不必將粘貼複製到每個子類中,因爲它覆蓋了父代原始代碼。

如何讓子類中的函數將自己的代碼追加到自己的代碼而不是重寫?

回答

0

將子類轉換爲具有所需功能的類,然後從您自己的類中繼承子類以獲得相似的子類。

你不想實現的方法,根本不需要,並且它們在子類中繼續是虛擬的。

人們也在這些情況下使用圖書館。

+0

如果A類是B類的父類,而A類的代碼是WX,而B類代碼是YZ,那麼B類不會執行WXYZ,這是我試圖實現的目標,它將覆蓋WX,執行YZ。 – kvanberendonck

+0

您可以在子類中使用'ParentClass :: parentMethod()'語法調用父方法。 –

+0

謝謝,__super也完美地適用於此! – kvanberendonck