![]() |
Delphi-Version: 10.2 Tokyo
Sichtbarkeit von klassenlokalen Typen
Hallo!
Delphi-Quellcode:
Warum?
type
TmyBaseClass = class(TObject) protected type TmyNestedType = record SomeProperty: Integer; end; end; TmyChildClass = class(TmyBaseClass) protected function Produce: TmyNestedType; // E2003: Undeklarierter Bezeichner: TmyNestedType end; Grüße Cody |
AW: Sichtbarkeit von klassenlokalen Typen
Warum das nicht geht frage ich mich auch. Aber so sollte es gehen.
Delphi-Quellcode:
function Produce: TmyBaseClass.TmyNestedType; // E2003: Undeklarierter Bezeichner: TmyNestedType
|
AW: Sichtbarkeit von klassenlokalen Typen
Ich habe es inzwischen so ähnlich gelöst. Aber beide Lösungen wirken irgendwie freaky.
Delphi-Quellcode:
TmyBaseClass = class(TObject)
protected type TmyNestedType = record SomeProperty: Integer; end; end; TmyChildClass = class(TmyBaseClass) protected type TmyNestedType = TmyBaseClass.TmyNestedType; protected function Produce: TmyNestedType; end; |
AW: Sichtbarkeit von klassenlokalen Typen
Mach doch einen Feature Request auf.
|
AW: Sichtbarkeit von klassenlokalen Typen
Delphi-Quellcode:
kann natürlich nicht gehen, da es vom aktuellen Scope aus nicht sichtbar ist.
TmyNestedType
Delphi-Quellcode:
wäre somit "eigentlich" richtig.
TmyBaseClass.TmyNestedType
Ich vermute mal, dass es aber noch nicht bekannt ist, da der TYPE-Block noch nicht abgeschlossen ist. Auch bei den Generics gibt es da schonmal Problemchen.
Delphi-Quellcode:
TmyNestedType könnte hier sogar private sein, nur nicht strict-private, aber wegen der Vererbung von TmyChildClass wäre protected am Besten, da gleiches Level wie Produce.
type
TmyBaseClass = class(TObject) protected type TmyNestedType = record SomeProperty: Integer; end; end; type TmyChildClass = class(TmyBaseClass) protected function Produce: TmyBaseClass.TmyNestedType; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 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