quelqu'un sans paramètre peut-il expliquer pourquoi dans le code ci-dessous, class1List ne pas besoin Class1 d'avoir un constructeur sans paramètre, mais class2list ne besoin de classe 2 d'avoir un constructeur sans paramètre.Génériques sans constructeurs de
unit Unit11;
interface
uses
System.Generics.Collections;
type
class1 = class
public
constructor Create(const i : integer); virtual;
end;
class1List<T : class1 > = class(TObjectList<T>)
public
function AddChild(const i : integer) : T;
end;
class2 = class
public
constructor Create(const i : integer);
end;
class2List<T : class2 > = class(TObjectList<T>)
public
function AddChild(const i : integer) : T;
end;
implementation
{ class1List<T> }
function class1List<T>.AddChild(const i: integer): T;
begin
Result := T.Create(i);
inherited Add(Result);
end;
{ class2List<T> }
function class2List<T>.AddChild(const i: integer): T;
begin
Result := T.Create(i);
inherited Add(Result);
end;
{ class1 }
constructor class1.Create(const i: integer);
begin
end;
{ class2 }
constructor class2.Create(const i: integer);
begin
end;
end.
Intéressant. Merci pour votre explication. – Dsm
'Notez que les versions antérieures du compilateur' sauriez-vous dans quelle version cela a été corrigé? – Johan
@Johan La distribution est nécessaire dans XE7, je soupçonne qu'il pourrait avoir changé à Seattle, mais je ne sais que des commentaires ici, et ma mémoire pourrait facilement se tromper –