2010-08-04 6 views
3

J'ai deux classes, une classe de base et une classe dérivée. Ma classe de base a un constructeur de ce formulaire:Problème d'héritage de constructeur

constructor TBaseClass.CreateFromXML(ANode: IXMLNode); 
begin 

    Create; 

    //Set members from XML 

end; 

Ma classe dérivée a un constructeur de ce formulaire:

constructor TDerivedClass.Create; 
begin 

    FDatabaseID = -1; 

end; 

Mon problème est que lorsque je crée un objet de ma classe dérivée en utilisant le constructeur de la classe de base [TDerivedClass.CreateFromXML(Node);] le Create appelé au début du constructeur CreateFromXML n'est pas celui de ma classe dérivée, mais plutôt celui hérité par ma classe de base de TObject.

Est-il possible d'obtenir que le constructeur de la classe de base appelle mon constructeur de classe dérivé même s'il est plus bas que la chaîne d'héritage?

+0

Si vous avez besoin d'un code dérivé à exécuter à un certain moment lors de la création, vous devez probablement utiliser un événement. Ce serait plus élégant que d'essayer de donner à la classe de base les connaissances de la classe dérivée. –

Répondre

8

Essayez de déclarer un constructor Create; virtual; dans TBaseClass. N'oubliez pas de marquer le constructeur "dérivé" comme override.

+0

Juste, merci. Cela fait longtemps que j'ai rencontré cette situation; Merci pour le rappel! –

Questions connexes