E2136 Aucune définition autorisée pour la méthode abstraite '%s' (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Vous avez déclaré nom> en abstract, mais le compilateur a trouvé une définition pour la méthode dans le fichier source. Il est incorrect de fournir une définition pour une déclaration abstract.



program Produce;

  type
    Base = class
      procedure Foundation; virtual; abstract;
    end;

    procedure Base.Foundation;
    begin
    end;

begin
end.

Les méthodes abstract ne peuvent pas être définies. Une erreur apparaîtra à Base.Foundation lorsque vous compilerez ce programme.



program Solve;

  type
    Base = class
      procedure Foundation; virtual; abstract;
    end;

    Derived = class (Base)
      procedure Foundation; override;
    end;

    procedure Derived.Foundation;
    begin
    end;

begin
end.

Deux étapes sont nécessaires pour résoudre cette erreur. D'abord, vous devez enlever la définition de la procédure abstract qui est déclarée dans la classe de base. Deuxièmement, vous devez étendre la classe de base, déclarer la procédure abstract en 'override' dans l'extension, puis fournir une définition pour la procédure nouvellement déclarée.