E2568 型パラメータ宣言でコンストラクタ制約のない新しいインスタンスを作成できません(Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動


これが発生するのは、暗黙のコンストラクタを持つクラスからジェネリック型が派生され、その際にデフォルト コンストラクタ句が指定されていない場合です。


 program E2568;
 
 {$APPTYPE CONSOLE}
 
 uses
   SysUtils;
 
 type
 TMyClass1 = class
 
 end;
 TMyClass2<T: TMyClass1> = class // Fix: replace < T : TmyClass1> with <T : TMyClass1, constructor> 
 public
 procedure Add;
 end;
 
 procedure TMyClass2<T>.Add;
 begin
 T.Create(nil); //E2568
 end;
 
 begin
   Writeln('E2568 Cannot create new instance without CONSTRUCTOR constraint in type parameter declaration');
 end.