Afficher : Object Pascal C++
Préférences d'affichage

E2266 Seule une des méthodes surchargées peut être publiée (Object Pascal)

De Appmethod Topics

Remonter à Messages d'erreur et d'avertissement (Object Pascal) - Index

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

Outils personnels
Autres langues