delphi – 如何定义一个参数在后代类中不同的虚函数?

delphi – 如何定义一个参数在后代类中不同的虚函数?,第1张

概述我想要一个 复制在基类中定义为虚拟的例程,稍后在派生类中实现. 问题是由于参数不同,不允许覆盖该过程. Delphi的类模型有什么解决方案,还是我的方法完全错了? type TCar = class procedure CopyFrom(c: TCar); virtual; end; TChrysler = class(TCar) FColor: Integer; 我想要一个
复制在基类中定义为虚拟的例程,稍后在派生类中实现.
问题是由于参数不同,不允许覆盖该过程.
Delphi的类模型有什么解决方案,还是我的方法完全错了?

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  //virtualend;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;
解决方法 您需要保持参数列表相同,只需在实现内部进行类型检查:

type  TCar = class    procedure copyFrom(c: TCar); virtual;  end;  TChrysler = class(TCar)    Fcolor: Integer;    procedure copyFrom(c: TCar); overrIDe;  end;procedure TCar.copyFrom(c: TCar);begin  //virtualend;procedure TChrysler.copyFrom(c: TCar);begin  if c is TCrysler then    Fcolor := TCrysler(c).Fcolor;  inherited;end;
总结

以上是内存溢出为你收集整理的delphi – 如何定义一个参数在后代类中不同的虚函数?全部内容,希望文章能够帮你解决delphi – 如何定义一个参数在后代类中不同的虚函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存