x1020: Construction d'instance de '%s' contenant des méthodes abstraites '%s.%s' (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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


Le code que vous compilez construit des instances de classes contenant des méthodes abstract.


program Produce;
(*$WARNINGS ON*)
(*$HINTS ON*)

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

  var
    b: Base;

begin
  b := Base.Create;
end.

Une procédure abstract n'existe pas, ainsi il devient dangereux de créer des instances d'une classe contenant des procédures abstract. Dans ce cas, la création de 'b' est la cause de l'avertissement. Toute évocation à 'Abstraction' via l'instance de 'b' créée ici provoquera une erreur d'exécution. Une information sera émise spécifiant que la valeur affectée à 'b' n'est jamais utilisée.


program Solve;
(*$WARNINGS ON*)
(*$HINTS ON*)

  type
    Base = class
      procedure Abstraction; virtual;
    end;

  var
    b: Base;

  procedure Base.Abstraction;
  begin
  end;

begin
  b := Base.Create;
end.

Une solution à ce problème consiste à enlever la directive abstract de la déclaration de procédure, c'est ce que nous avons utilisé ici. Une autre approche du problème serait de dériver une classe de Base puis de fournir une version concrète d'Abstraction. Une information sera émise spécifiant que la valeur affectée à 'b' n'est jamais utilisée.