我在 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;