2

我在 Delphi XE 中发现了一个关于泛型类型 def 的奇怪问题。我创建了TObjectList的派生类,其中包括许多类(例如 fIndex)。然后我创建一个包含指向所有者的链接的后代类TMyButtonlist 。对象fIndex未创建,因此在销毁时必须为零。但是当我设置fOwer变量时,fIndex变量得到相同的指针,并在销毁时崩溃。

type
  TMyObjectList<T:class> = class(TObjectList<T>)
  private
    fIndex:TStringList;
  public
    destructor Destroy; override;
  end;

  TMyButtonList = class(TMyObjectList<TButton>)
  private
    Owner:TObject;
  end;

destructor TMyObjectList<T>.Destroy;
begin
  fIndex.Free;
  inherited;
end;

procedure TMainForm.btnClick(Sender: TObject);
var
  Buttonlist:TMyButtonList;
begin
  Buttonlist:=TMyButtonList.Create;
  Buttonlist.Owner := Self;
  ButtonList.Free;
end;
4

0 回答 0