我想要一個 複製例程,它在基類中定義爲虛擬,稍後在派生類中實現。 問題是,由於參數不同,不允許覆蓋該過程。 有沒有解決與德爾福的班級模型或我的方法是完全錯誤的?如何定義子類中參數不同的虛函數?
type
TCar = class
procedure CopyFrom(c: TCar); virtual;
end;
TChrysler = class(TCar)
FColor: Integer;
procedure CopyFrom(c: TChrysler); override;
end;
procedure TCar.CopyFrom(c: TCar);
begin
//virtual
end;
procedure TChrysler.CopyFrom(c: TCrysler);
begin
FColor := c.FColor;
end;
var
Car1, Car2: TCar;
begin
Car1 := TChrysler.Create;
Car2 := TChrysler.Create;
Car2.CopyFrom(Car1); //TChrysler.CopyFrom should be called.
end;
您正在尋找['reintroduce'(HTTP:// docwiki .embarcadero.com/RADStudio/XE3/EN /方法#重新引入)。 – TLama 2013-03-27 23:19:13
看起來像TPersistent.Assign,我討厭它發生。 – 2013-03-27 23:19:31
Delphi中的典型方法是提供'Assign'和'AssignTo'方法,你可以使用'Car2.Assign(Car1);'。如果您查看VCL源代碼,可以看到許多使用此技術的示例,這些示例可以與具有新屬性的派生類正常工作。例如,參見'Classes'單元中的'TStringList.Assign'。 – 2013-03-27 23:28:14