![]() |
Re: "Fehler" bei Überschreiben von Properties
Zitat:
Ich wuerde den Compiler zu Tode pruegeln, wenn er mir eine virtuelle Setter-Methode deklarieren wuerde, obwohl ich einen Direkten Zugriff von der Property auf die Variable wuensche. greetz Mike |
Re: "Fehler" bei Überschreiben von Properties
Ich meinte ja auch, er solle es nur tun, wenn man ansonsten Ärger mit den überschriebenen Properties bekommt.
Wie gesagt, es ist für mich äußerst... befremdlich/seltsam/gewohnheitsbedürftig, dass TB(a).Foo:=42 etwas anderes bewirkt als a.Foo:=42. Intuitiv würde ich sagen, das widerspricht der "dynamischen Bindung", wenn man so verschiedene Effekte durch Typencasting bei Klassen erreicht. |
Re: "Fehler" bei Überschreiben von Properties
Zitat:
Zitat:
greetz Mike |
Re: "Fehler" bei Überschreiben von Properties
*kratz*
Naja egal. Welche Workaround gibt es da? Einfach die Property in der Oberklasse statt mit Direktzugriff auf die Felder mit einem Setter deklarieren? |
Re: "Fehler" bei Überschreiben von Properties
Also ich mache das normalerweise so:
Delphi-Quellcode:
[edit]Ausversehen auf Absenden gekommen...[/edit]
type
TA=class protected FFoo: Integer; function GetFoo: Integer;virtual; procedure SetFoo(AFoo: Integer);virtual; public property Foo: Integer read GetFoo write SetFoo; end; TB=class(TA) protected procedure SetFoo(AFoo: Integer);override; function GetFoo: Integer;override; public end; implementation procedure TA.SetFoo(AFoo: Integer); begin FFoo := AFoo; end; procedure TA.SetFoo(AFoo: Integer); begin Result := FFoo; end; procedure TB.SetFoo(AFoo: Integer); begin FFoo := AFoo; ShowMessage('BLA'); end; procedure TB.SetFoo(AFoo: Integer); begin Result := FFoo div 2; end; [edit]Noch einen Fehler gefunden[/edit] |
Re: "Fehler" bei Überschreiben von Properties
Zitat:
|
Re: "Fehler" bei Überschreiben von Properties
Zitat:
mal nebenbei bemerkt, Du überschreibst hier nichts, Du verdeckst nur. Das liegt eben daran, dass Delphi standardmässig statisch bindet. Wollte ich nur mal anmerken, denn beim Überschreiben hättest Du schon irgendwie dein erwartetes Verhalten. Gruß Der Unwissende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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