Próbuję utworzyć klasę podrzędną TForm zDelphi/Pascal: przeciążenie konstruktora z innego prototypu
- specjalnego konstruktora dla pewnych przypadkach i
- konstruktor domyślny, który będzie utrzymywać zgodność z aktualnym kodem.
Jest to kod mam teraz:
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;
wydaje się działać, ale zawsze pojawia się ostrzeżenie kompilatora:
[Warning] test.pas(44): Method 'Create' hides virtual method of base type 'TCustomForm'
- dodając: "przeciążenie"; po tym, jak drugi konstruktor nie skompiluje się. "[Błąd] test.pas (44): Deklaracja" Utwórz "różni się od poprzedniej deklaracji".
- tworząc drugi konstruktor kompiluje funkcję klasy bez żadnych błędów ani ostrzeżeń, ale umiera z naruszeniem dostępu w czasie wykonywania (wszystkie pręty członkowskie są zerowe).
bango! Słowo kluczowe "reintrodukuj" jest dokładnie tym, co jest potrzebne. Oryginalny konstruktor jest również potrzebny, ponieważ ustawia zestaw danych na prawidłową wartość domyślną. –