2

エラーが発生するコードは次のとおりです。

TAdvSmoothDockItems = class(TCollection)
private
  FOwner: TAdvSmoothDock;
  FOnChange: TNotifyEvent;
protected
  function GetItem(Index: Integer): TAdvSmoothDockItem; virtual; //YLM_TMS_01
  procedure SetItem(Index: Integer; const Value: TAdvSmoothDockItem); virtual; //YLM_TMS_01
  function GetOwner: TPersistent; override;
public
  constructor Create(AOwner: TAdvSmoothDock); overload; virtual;    //YLM_TMS_01
  function Add: TAdvSmoothDockItem; virtual;    //YLM_TMS_01
  function Insert(Index: Integer): TAdvSmoothDockItem; virtual;    //YLM_TMS_01
  property Items[Index: Integer]: TAdvSmoothDockItem read GetItem write SetItem; default;
  procedure Delete(Index: Integer); virtual;    //YLM_TMS_01
published
  property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;


TKHAdvSmoothDockItems = class(TAdvSmoothDockItems)
  private
    FOwner: TKHAdvSmoothDock;
    FOnChange: TNotifyEvent;
  protected
    function GetItem(Index: Integer): TKHAdvSmoothDockItem; override;
    procedure SetItem(Index: Integer; const Value: TKHAdvSmoothDockItem); override;
    function GetOwner: TPersistent; override;
  public
    constructor Create(AOwner: TKHAdvSmoothDock);
    function Add: TKHAdvSmoothDockItem;
    function Insert(Index: Integer): TKHAdvSmoothDockItem;
    property Items[Index: Integer]: TKHAdvSmoothDockItem read GetItem write SetItem; default;
    procedure Delete(Index: Integer); override;
  published
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

このコードは私に次のエラーを与えます:

E2037 'GetItem' の宣言が前の宣言と異なります

なぜ ?基本クラスの GetItem を「仮想」として宣言した後、次のクラス (TKHAdvSmoothDockItems) でそれをオーバーライドしようとしました...? それを修正する方法は?

4

1 に答える 1