E2267 La déclaration précédente de '%s' n'a pas été marquée de la directive 'overload' (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Il y a deux façons de résoudre ce problème. Vous pouvez supprimer la tentative de surcharge ou signaler la déclaration originale par la directive overload. L'exemple ci-dessus marque la déclaration originale.


program Produce;
type
  Base = class
    procedure func(a : integer);
    procedure func(a : char); overload;
  end;

  procedure Base.func(a : integer);
  begin
  end;

  procedure Base.func(a : char);
  begin
  end;

end.

Cet exemple tente de surcharger la version char de func sans signaler que la première version de func peut être surchargée.

Vous devez signaler toutes les fonctions pouvant être surchargées par la directive overload. Si overload n'était pas nécessaire pour toutes les versions, il est possible d'introduire une nouvelle méthode surchargeant une méthode existante, et ensuite une simple recompilation du source pourra produire un autre comportement.


program Solve;
type
  Base = class
    procedure func(a : integer); overload;
    procedure func(a : char); overload;
  end;

  procedure Base.func(a : integer);
  begin
  end;

  procedure Base.func(a : char);
  begin
  end;

end.