![]() |
Delphi-Version: XE5
Frage zu overload + reintroduce
Eine Kindklasse möchte eine abstrakte Methode der Oberklasse implementieren und überladen. Beispiel:
Delphi-Quellcode:
Der Compiler meint:
TBaseClass = class abstract
procedure someProc(); virtual; abstract; end; TChildClass = class(TBaseClass) procedure someProc(); overload; override; procedure someProc(const someInput: Integer); overload; virtual; end;
Code:
Ich sehe nicht, wie da irgendetwas verborgen wird :gruebel:
Warnung: W1010 Methode 'someProc' verbirgt virtuelle Methode vom Basistyp 'TBaseClass'
Die Compilerwarnung geht weg wenn man entweder
Ersteres finde ich Quatsch. In der Oberklasse interessiert es mich herzlich wenig, ob in einer Kindklasse mal überladen wird. Außerdem würde ich mir so wahrscheinlich angewöhnen, grundsätzlich an jede Methode ein 'overload' anzuhängen. Zweiteres ist logisch, laut Hilfe macht 'reintroduce' nichts anderes, als nur Compilerwarnungen zu unterdrücken. Aber wie gesagt: Ich sehe nicht, wie hier überhaupt etwas verdeckt wird... |
AW: Frage zu overload + reintroduce
In der Hilfe von meinem Delphi XE ist diese Compiler-Warnung ganz gut erklärt und 3 Dinge zum Vermeiden der Warnung angegeben.
|
AW: Frage zu overload + reintroduce
Nja, im Prinzip wird da vermutlich nur was falsch getestet (beim kompilieren des zweiten someProc wird das Erste nicht beachtet), aber das ist schon ewig so und läßt sich via reintroduce gut unterdrücken.
|
AW: Frage zu overload + reintroduce
Zitat:
Mein Punkt ist nur, dass hier nichts verdeckt wird und der Compiler mit seiner Warnung nicht Recht hat. |
AW: Frage zu overload + reintroduce
Mach Dir doch mal den QC-Spaß...
|
AW: Frage zu overload + reintroduce
Zitat:
Sherlock |
AW: Frage zu overload + reintroduce
Kann ich gerne tun, ich wollte nur sicherstellen, dass hier kein Denkfehler drin ist und der Compiler mit seiner Warnung wirklich Unrecht hat.
Falls also noch jemand seine qualifizierte Meinung abgeben möchte ;-) |
AW: Frage zu overload + reintroduce
Gibt's wohl schon öfters, wie hier z.B.
![]() |
AW: Frage zu overload + reintroduce
"and u can see it in tests"
Etwas ungeschickt beschrieben aber ja, genau das ist es. Danke. |
AW: Frage zu overload + reintroduce
Vielleicht ist es schon zu spät heute ... oder verstehe ich die Fehlermeldung zu Recht nicht?
Create ist normal überschrieben. Create(xxx) will ich virtuell erzeugen und überladen, damit ich es später bei Bedarf überschreiben kann. Nach "overload; virtual;" wird "reintroduce;" jedoch nicht akzeptiert. Wenn ich "reintroduce;" weg lasse funktioniert das Geraffel so. Die unsinnige Fehlermeldung kann ich also nicht mal unterdrücken. Oder liegt hier ein Denkfehler meinerseits vor?
Delphi-Quellcode:
TTest = class(TBase)
... public RTState: Boolean; constructor Create; overload; override; constructor Create(aClassName: String); overload; virtual; reintroduce; destructor Destroy; override; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz