Delphi/Pascal: Farklı bir prototip ile bir kurucu aşırı
- ile belirli durumlar için özel bir yapıcısı TForm bir çocuk sınıfı oluşturmak çalışıyorum
ve
- uyumluluk sağlar varsayılan bir kurucu mevcut kod ile.
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;
Bu iş gibi görünüyor, ama her zaman derleyici uyarı alıyorum:
Bu Şimdi sahip kodudur
[Warning] test.pas(44): Method 'Create' hides virtual method of base type 'TCustomForm'
- ekleme "aşırı;" ikinci kurucudan sonra derleme yapmaz. "[Error] test.pas (44): 'Oluştur' beyanı önceki beyannameden farklıdır".
- İkinci yapıcıyı bir sınıf işlevi herhangi bir hata veya uyarı olmadan derler ancak çalışma zamanında bir erişim ihlali ile ölür (tüm üye variller sıfırdır). Bu gibi ikinci
overload
öncereintroduce
ekleyerek
bango! "Yeniden" anahtar kelimesi tam olarak ihtiyaç duyulan şeydir. Orijinal kurucu da gereklidir, çünkü veri kümesini uygun varsayılan değere ayarlar. –