本文介绍了具有参数约束的泛型构造函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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;
如何使用整数参数创建类。什么是解决方法?
How do I make it to create the class with the integer param. What is the workaround?
推荐答案
只需键入正确的类:
type
TMyBaseClassClass = class of TMyBaseClass;
procedure TClass1<T>.Test;
begin
FItem:= T(TMyBaseClassClass(T).Create(42));
end;
也可以让构造函数虚拟化。
Also it's probably a good idea to make the constructor virtual.
这篇关于具有参数约束的泛型构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!