TMyBaseClass=class constructor(test:integer); end; TMyClass=class(TMyBaseClass); TClass1<T: TMyBaseClass,constructor>=class() public FItem: T; procedure Test; end; procedure TClass1<T>.Test; begin FItem:= T.Create; end; var u: TClass1<TMyClass>; begin u:=TClass1<TMyClass>.Create(); u.Test; end;
如何使用整数参数创建类.解决方法是什么?
解决方法
只是对正确的类进行类型转换:
type TMyBaseClassClass = class of TMyBaseClass; procedure TClass1<T>.Test; begin FItem:= T(TMyBaseClassClass(T).Create(42)); end;
此外,将构造函数设置为虚拟可能是个好主意.