Delphi/pascal: le fait de surcharger un constructeur à un autre prototype

Je suis en train de créer une classe enfant de TForm avec

  1. spéciale constructeur pour certains cas, et
  2. un constructeur par défaut qui permettra de maintenir la compatibilité avec le code actuel.

C'est le code que j'ai maintenant:

interface
  TfrmEndoscopistSearch = class(TForm)
  public
    /// original constructor kept for compatibility
    constructor Create(AOwner : TComponent); overload; override;
    /// additional constructor allows for a caller-defined base data set
    constructor Create(AOwner : TComponent; ADataSet : TDataSet; ACaption : string = ''); overload;
  end;

Il semble fonctionner, mais je reçois toujours le message d'avertissement du compilateur:

[Avertissement] test.pas(44): la Méthode de "Créer" des peaux de méthode virtuelle de la base type 'TCustomForm' 
  • L'ajout de "surcharge;" après le deuxième constructeur ne compile pas. "[Erreur] test.pas(44): la Déclaration de "Créer" se distingue de la précédente déclaration".
  • en faisant le deuxième constructeur d'une classe de la fonction compile sans erreurs ou des avertissements, mais meurt avec une violation d'accès lors de l'exécution (tous les membres de vars est nul).

OriginalL'auteur David Dombrowsky | 2009-11-18