![]() |
virtual; override; Field definition not allowed after method
Hi @ll,
ich habe vollgenden (aufs wesentliche gekürtzten) Quelltext:
Delphi-Quellcode:
An der markierten Stelle bekomme ich die Fehlermeldung
TLeanoFloat =class;
TLeanoVar =class public function ToFloat:TLeanoFloat; virtual; abstract; procedure Add(arg:TLeanoVar); virtual; procedure Sub(arg:TLeanoVar); virtual; procedure Multiply(arg:TLeanoVar); virtual; procedure Divide(arg:TLeanoVar); virtual; end; TLeanoFloat =class(TLeanoVar) public procedure Add(arg:TLeanoVar); virtual; override; // <--- HIER procedure Sub(arg:TLeanoVar); virtual; override; procedure Multiply(arg:TLeanoVar); virtual; override; procedure Divide(arg:TLeanoVar); virtual; override; value: extended; constructor Create(v: extended); function ToFloat:TLeanoFloat; end; [Error] UParserVars.pas(35): E2169 Field definition not allowed after methods or properties WIESO? Es sind nicht nur keine Field definitions davor, es sind GARKEINE definitions davor. Oder sehe ich da was falsch? EDIT: Ehe jetzt jemand sagt, ich soll value:Extended höher verschieben: So war es am Anfang... Gleicher Fehler in gleicher zeile... Ich habe die virtual; override;-Funktionen danach erst hochgeschoben... EDIT2: Delphi 2k5 |
Re: virtual; override; Field definition not allowed after me
Hi yankee,
versuche es mal so:
Delphi-Quellcode:
Gruß Hawkeye
TLeanoFloat =class(TLeanoVar)
public value: extended; procedure Add(arg:TLeanoVar); override; procedure Sub(arg:TLeanoVar); override; procedure Multiply(arg:TLeanoVar); override; procedure Divide(arg:TLeanoVar); override; constructor Create(v: extended); function ToFloat:TLeanoFloat; end; |
Re: virtual; override; Field definition not allowed after me
mhh... stimmt...
In der Superklasse sind die Funktionen ja längst als virtual deklariert. Das muss man ja nicht nochmal machen ;-). Obwohl die Fehlermeldung schon etwas verwirrend ist... Danke jedenfalls... |
Re: virtual; override; Field definition not allowed after me
Zitat:
![]() |
Re: virtual; override; Field definition not allowed after me
Eigentlich muss du dir hier nur merken, das virtual und override zusammengehören.
Als virtual deklarierst du deine Methode in der Basisklasse. In der abgeleiteten Klasse kannst du sie dann mit override überschreiben. Dein Fehler war die doppelte Benutzung des Wörtchens virtual (nämlich auch in der abgel. Klasse). |
Re: virtual; override; Field definition not allowed after me
Zitat:
Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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