![]() |
Delphi-Version: 5
"class of"-Methaobjekt ruft falschen Konstruktor auf?
Moin, ich habe folgendes Problem (etwas vereinfacht dargestellt):
Delphi-Quellcode:
Warum wird der Constructor von TBundesstrasse nicht aufgerufen?
type
TStrasse = class(TObject) private Rand : string; public constructor Create; end; TBundesstrasse = class(TStrasse) public constructor Create; end; TStrasseClass = class of TStrasse; ... constructor TStrasse.Create; begin Rand := 'Bordstein'; end; constructor TBundesstrasse.Create; begin inherited Create; Rand := 'Graben'; end; ... var StrasseClass : TStrasseClass; Strasse : TStrasse; begin StrasseClass := TBundesstrasse; Strasse := StrasseClass.Create; // Strasse.Rand = Bordstein!? end; |
AW: "class of"-Methaobjekt ruft falschen Konstruktor auf?
Zitat:
Delphi-Quellcode:
und der von TBundesstrasse nicht
virtual
Delphi-Quellcode:
ist.
override
|
AW: "class of"-Methaobjekt ruft falschen Konstruktor auf?
Weil du den Konstruktor nicht virtuell gemacht hast.
Edit: Kein roter Kasten, ich schwöre es! |
AW: "class of"-Methaobjekt ruft falschen Konstruktor auf?
Und genau das ist der Unterschied zwischen Überschreiben und Verdecken.
|
AW: "class of"-Methaobjekt ruft falschen Konstruktor auf?
Danke für eure Antworten.
Ich dachte immer es wäre schlechter Stil den Konstruktor zu überschreiben. Sollte nicht
Delphi-Quellcode:
und
StrasseClass := TBundesstrasse;
Strasse := StrasseClass.Create;
Delphi-Quellcode:
das gleiche sein?
Strasse := TBundesstrasse.Create;
|
AW: "class of"-Methaobjekt ruft falschen Konstruktor auf?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz