2010-08-04 3 views
3

У меня есть два класса, базовый класс и производный класс. Мой базовый класс имеет конструктор этой формы:Проблема наследования конструктора

constructor TBaseClass.CreateFromXML(ANode: IXMLNode); 
begin 

    Create; 

    //Set members from XML 

end; 

Мой производный класс имеет конструктор этой формы:

constructor TDerivedClass.Create; 
begin 

    FDatabaseID = -1; 

end; 

Моя проблема заключается в том, что когда я создаю объект моего производного класса с помощью конструктора из базового класса [TDerivedClass.CreateFromXML(Node);] Create, вызванный в начале конструктора CreateFromXML, не является одним из моего производного класса, а скорее тем, который унаследован моим базовым классом из TObject.

Возможно ли, чтобы конструктор базового класса вызывал конструктор производного класса, даже если он далее «опускает» цепочку наследования?

+0

Если вам нужно, чтобы производный код выполнялся в определенное время во время создания, вы должны, вероятно, просто использовать событие. Это было бы более элегантно, чем попытка дать базовому классу знания производного класса. –

ответ

8

Попробуйте объявить constructor Create; virtual; в TBaseClass. Не забудьте отметить «производный» конструктор как override.

+0

Просто так, спасибо. Прошло много времени с тех пор, как я столкнулся с такой ситуацией; Спасибо за напоминание! –

Смежные вопросы