Tenir compte:"" opérateur pour les types génériques contraintes
TTest <T : class, constructor> = class
public
function CreateMyObject : T;
end;
function TTest<T>.CreateMyObject : T;
var
Obj : TObject;
begin
Obj := T.Create;
Result := (Obj as T);
end;
Pourquoi est-ce pas possible? Le compilateur génère un message d'erreur "Opérateur non applicable à ce type" pour l'opérateur en tant qu'opérateur. T est contraint à être un type de classe, donc cela devrait fonctionner, n'est-ce pas?
Merci pour l'aide.
Est-ce que le résultat: = T (Obj) fonctionne? –
Non. Ce serait un transtypage invalide. – jpfollenius