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é.