1

如何将 TypeIdenitifier 转换为类类型?我需要使用隐式转换。

type
  TMyChildArray<T>=class(TMyArray<T>)
    private
      FData:Array of T;
      procedure AddEnd();
  end;

  TTypeIdenitifierParentClass=class(TAnotherParentClass)
    protected
      TestField:Cardinal;
  end;


  procedure TMyChildArray<T>.AddEnd();
  var elem:T;
  begin
    for elem in Fdata do
      TTypeIdenitifierParentClass(elem).TestField:=0;
  end;

我在隐式转换“TTypeIdenitifierParentClass(elem).TestField:=0;”上得到“无效类型转换”。

我要使用的原则是 TypeIdenitifier 将代表一个从 TTypeIdenitifierParentClass 派生的类。类类型有很多,但它们都派生自该类。

我该怎么做呢?

4

1 回答 1

2

delphi 抱怨转换的原因是因为编译器无法知道 T 是否可以转换为“TTypeIdenitifierParentClass”。您需要将 T 限制为从“TTypeIdenitifierParentClass”下降的类

尝试以下

type
  TTypeIdenitifierParentClass=class(TAnotherParentClass)
    protected
      TestField:Cardinal;
  end;

  TMyChildArray<T: TTypeIdenitifierParentClass>=class(TMyArray<T>)
    private
      FData:Array of T;
      procedure AddEnd();
  end;

  procedure TMyChildArray<T>.AddEnd();
  var elem:T;
  begin
    for elem in Fdata do
      elem.TestField:=0;
  end;
于 2010-04-18T12:26:22.090 回答