AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi virtual; override; Field definition not allowed after method
Thema durchsuchen
Ansicht
Themen-Optionen

virtual; override; Field definition not allowed after method

Ein Thema von yankee · begonnen am 1. Feb 2007 · letzter Beitrag vom 2. Feb 2007
Antwort Antwort
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

virtual; override; Field definition not allowed after method

  Alt 1. Feb 2007, 22:16
Hi @ll,

ich habe vollgenden (aufs wesentliche gekürtzten) Quelltext:
Delphi-Quellcode:
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;
An der markierten Stelle bekomme ich die Fehlermeldung

[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
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: virtual; override; Field definition not allowed after me

  Alt 1. Feb 2007, 22:23
Hi yankee,

versuche es mal so:

Delphi-Quellcode:
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;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#3

Re: virtual; override; Field definition not allowed after me

  Alt 1. Feb 2007, 22:27
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...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: virtual; override; Field definition not allowed after me

  Alt 2. Feb 2007, 00:26
Zitat von yankee:
Obwohl die Fehlermeldung schon etwas verwirrend ist...
Du hast noch nicht gesehen, was der MSVC++ Compiler so alles bei Templates ausspuckt wenn er schlecht aufgelegt ist.
  Mit Zitat antworten Zitat
Muehle

Registriert seit: 24. Nov 2006
Ort: 92331 Parsberg
24 Beiträge
 
Delphi 2005 Architect
 
#5

Re: virtual; override; Field definition not allowed after me

  Alt 2. Feb 2007, 07:18
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).
G.M.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: virtual; override; Field definition not allowed after me

  Alt 2. Feb 2007, 08:01
Zitat von Muehle:
Dein Fehler war die doppelte Benutzung des Wörtchens virtual (nämlich auch in der abgel. Klasse).
Jein, das Feld value muß vor den Methoden definiert werden - zumindest bei älteren Delphi-Version. Bei neueren ist die Definition von Feldern nach den Methoden zulässig, sie müssen dann aber dann in einem VAR-Bereich innerhalb der Klassendefinition stehen. Die Fehlermeldung wäre also auch nach dem Entfernen der fehlerhaften VIRTUAL-Direktiven erschienen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz