tags:

views:

105

answers:

1

I have two classes, a base class and a derived class. My base class has a constructor of this form:

constructor TBaseClass.CreateFromXML(ANode: IXMLNode);
begin

  Create;

  //Set members from XML

end;

My derived class has a constructor of this form:

constructor TDerivedClass.Create;
begin

   FDatabaseID = -1;

end;

My problem is that when I create an object of my derived class using the constructor from the base class [ TDerivedClass.CreateFromXML(Node); ] the Create called at the beginning of the CreateFromXML constructor is not the one from my derived class, but rather the one inherited by my base class from TObject.

Is it possible to get the base class constructor to call my derived class constructor even though it's further "down" the inheritance chain?

+5  A: 

Try declaring a constructor Create; virtual; in TBaseClass. Don't forget to mark the "derived" constructor as override.

Ulrich Gerhardt
Just so, thank you. It's been a long time since I encountered this situation; thanks for the reminder!
Larry Lustig