我有两个类,一个基类和一个派生类。我的基类有一个这种形式的构造函数:
constructor TBaseClass.CreateFromXML(ANode: IXMLNode);
begin
Create;
//Set members from XML
end;
我的派生类有一个这种形式的构造函数:
constructor TDerivedClass.Create;
begin
FDatabaseID = -1;
end;
我的问题是,当我使用基类[TDerivedClass.CreateFromXML(Node);
]中的构造函数创建派生类的对象时,在CreateFromXML构造函数开头调用的Create不是我派生类中的Create,而是而是我的基类从TObject继承的那个。
是否有可能让基类构造函数调用我的派生类构造函数,即使它进一步“向下”继承链?
答案 0 :(得分:8)
尝试在TBaseClass中声明constructor Create; virtual;
。不要忘记将“派生”构造函数标记为override
。