2010-08-04 189 views
3

我有兩個類,一個基類和一個派生類。我的基類有這種形式的構造:構造函數繼承問題

constructor TBaseClass.CreateFromXML(ANode: IXMLNode); 
begin 

    Create; 

    //Set members from XML 

end; 

我的派生類中有這種形式的構造方法:

constructor TDerivedClass.Create; 
begin 

    FDatabaseID = -1; 

end; 

我的問題是,當我使用構造函數創建我的派生類對象從基類[TDerivedClass.CreateFromXML(Node);],在CreateFromXML構造函數的開頭調用的Create不是來自我的派生類的,而是我的基類從TObject繼承的。

是否有可能讓基類構造函數調用我的派生類構造函數,即使它繼承了「繼承鏈」?

+0

如果您需要派生的代碼在創建期間的特定時間執行,那麼您應該只使用一個事件。這會比試圖給出派生類的基類知識更優雅。 – 2010-08-04 12:11:51

回答

8

嘗試在TBaseClass中聲明constructor Create; virtual;。不要忘記將「派生」構造函數標記爲override

+0

就這樣,謝謝。我遇到這種情況已經很長時間了;感謝您的提醒! – 2010-08-04 12:47:06