Je suis en train de créer une classe d'enfants de TForm avecDelphi/pascals: la surcharge d'un constructeur avec un autre prototype
- un constructeur spécial pour certains cas, et
- un constructeur par défaut qui maintiendra la compatibilité avec le code actuel.
Ceci 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 l'avertissement du compilateur:
[Warning] test.pas(44): Method 'Create' hides virtual method of base type 'TCustomForm'
- Ajout "surcharge;" après le deuxième constructeur ne compilera pas. "[Error] test.pas (44): La déclaration de 'Create' diffère de la déclaration précédente".
- faisant le deuxième constructeur une fonction de classe compile sans erreurs ou avertissements, mais meurt avec une violation d'accès à l'exécution (toutes les variables membres sont nulles).
bango! Le mot clé "reintroduce" est exactement ce dont vous avez besoin. Le constructeur d'origine est également nécessaire car il définit l'ensemble de données sur la valeur par défaut appropriée. –