E2266 Seule une des méthodes surchargées peut être publiée (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Seul un membre d'un ensemble de fonctions surchargées peut être publié puisque le RTTI généré pour les procédures ne contient que le nom.
(*$M+*)
(*$APPTYPE CONSOLE*)
program Produce;
type
Base = class
published
procedure p1(a : integer); overload;
procedure p1(a : boolean); overload;
end;
Extended = class (Base)
procedure e1(a : integer); overload;
procedure e1(a : boolean); overload;
end;
procedure Base.p1(a : integer);
begin
end;
procedure Base.p1(a : boolean);
begin
end;
procedure Extended.e1(a : integer);
begin
end;
procedure Extended.e1(a : boolean);
begin
end;
end.
Dans cet exemple, les deux fonctions p1 surchargées se trouvent dans une section published, ce qui est interdit.
De plus, comme l'état $M+ est utilisé, la classe Extended commence par la visibilité published ; en conséquence, l'erreur apparaîtra aussi pour cette classe.
(*$M+*)
(*$APPTYPE CONSOLE*)
program Solve;
type
Base = class
public
procedure p1(a : integer); overload;
published
procedure p1(a : boolean); overload;
end;
Extended = class (Base)
public
procedure e1(a : integer); overload;
procedure e1(a : boolean); overload;
end;
procedure Base.p1(a : integer);
begin
end;
procedure Base.p1(a : boolean);
begin
end;
procedure Extended.e1(a : integer);
begin
end;
procedure Extended.e1(a : boolean);
begin
end;
end.
La solution consiste ici à vérifier qu'un seul membre d'un ensemble d'une fonction surchargée apparaît dans une section published. Le moyen le plus simple est de rendre la visibilité public, protected ou private; selon ce qui est approprié.