我尝试编译这段代码:
TMyClass<T: class, constructor> = class(TObjectList<T>)
public
constructor Create; reintroduce;
end;
TConcretClass = class(TMyClass<TConcretClass>)
public
constructor Create; reintroduce;
end;
但我得到了下一个错误:
E2513 Type parameter 'T' must have one public parameterless constructor named Create
答案 0 :(得分:1)
TConcretClass = class(TMyClass<TConcretClass>)
我不认为你的意思是你宣布成为一个包含类型本身的成员的列表。在任何情况下,编译器都是对象的,因为TObjectList<T>
有一个构造函数,其参数不能被隐藏。编译器说:
E2513类型参数&#39; T&#39;必须有一个名为Create
的公共无参数构造函数
并且TObjectList<T>
无法满足该要求。
我怀疑你想要更像这样的东西:
type
TMyClass<T: class, constructor> = class(TObjectList<T>)
end;
TListMemberClass = class(TObject)
end;
TConcreteClass = class(TMyClass<TListMemberClass>)
end;