gpt4 book ai didi

Delphi:方法 'Create' 隐藏了基类的虚拟方法 - 但它就在那里

转载 作者:行者123 更新时间:2023-12-03 14:34:37 25 4
gpt4 key购买 nike

考虑假设的对象层次结构,从以下位置开始:

TFruit = class(TObject)
public
constructor Create(Color: TColor); virtual;
end;

及其后代:

TApple = class(TFruit)
public
constructor Create(); overload; virtual;
constructor Create(Color: TColor); overload; override; //deprecated. Calls other constructor - maintaining the virtual constructor chain
end;

这里的想法是,我已经重写基类的虚拟构造函数,并使用恰好也是虚拟的重载 .

德尔福提示:

Method 'Create' hides virtual method of base type 'TFruit'

只不过它没有隐藏它 - 它就在那里!

  • 覆盖了祖先中的虚拟方法,并且
  • 用另一个版本重载了

这是怎么回事?

最佳答案

两种解决方案:

type
TFruit = class(TObject)
public
constructor Create(Color: TColor); virtual;
end;

TApple = class(TFruit)
public
constructor Create(); reintroduce; overload;
constructor Create(Color: TColor); overload; override;
end;

或者:

type
TFruit = class(TObject)
public
constructor Create; overload; virtual; abstract;
constructor Create(Color: TColor); overload; virtual;
end;

TApple = class(TFruit)
public
constructor Create(); override;
constructor Create(Color: TColor); override;
end;

关于Delphi:方法 'Create' 隐藏了基类的虚拟方法 - 但它就在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com