复制在基类中定义为虚拟的例程,稍后在派生类中实现.
问题是由于参数不同,不允许覆盖该过程.
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 – 如何定义一个参数在后代类中不同的虚函数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)