Je vérifie l'essai Delphi 2009, mais j'ai rencontré des problèmes avec les génériques tout de suite.Delphi 2009 problème de compilation de génériques
Le code suivant ne compile pas, et je n'ai pas la moindre idée pourquoi il me donne E2015 pour la méthode equals():
type
TPrimaryKey<T> = class(TObject)
strict private
fValue: T;
public
constructor Create(AValue: T);
function Equals(Obj: TObject): boolean; override;
function GetValue: T;
end;
constructor TPrimaryKey<T>.Create(AValue: T);
begin
inherited Create;
fValue := AValue;
end;
function TPrimaryKey<T>.Equals(Obj: TObject): boolean;
begin
Result := (Obj <> nil) and (Obj is TPrimaryKey<T>)
and (TPrimaryKey<T>(Obj).GetValue = fValue);
end;
function TPrimaryKey<T>.GetValue: T;
begin
Result := fValue;
end;
Pourquoi pense que le compilateur qui fValue et le résultat de GetValue() ne peut pas être comparé?
Je ne comprends pas votre première phrase (je crois que le code ne le fait pas), mais remplacer le contrôle d'égalité dans Equals() par votre code TEqualityComparer résout mon problème, merci. Malheureusement, la documentation et les échantillons sont - encore une fois - une complète déception dans Delphi 2009 :-( – mghie