AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu overload + reintroduce

Ein Thema von Der schöne Günther · begonnen am 25. Nov 2013 · letzter Beitrag vom 23. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Frage zu overload + reintroduce

  Alt 25. Nov 2013, 10:52
Delphi-Version: XE5
Eine Kindklasse möchte eine abstrakte Methode der Oberklasse implementieren und überladen. Beispiel:

Delphi-Quellcode:
   TBaseClass = class abstract
      procedure someProc(); virtual; abstract;
   end;

   TChildClass = class(TBaseClass)
      procedure someProc(); overload; override;
      procedure someProc(const someInput: Integer); overload; virtual;
   end;
Der Compiler meint:
Code:
Warnung: W1010 Methode 'someProc' verbirgt virtuelle Methode vom Basistyp 'TBaseClass'
Ich sehe nicht, wie da irgendetwas verborgen wird

Die Compilerwarnung geht weg wenn man entweder
  1. TBaseClass::someProc() die Direktive 'overload' hinzufügt
  2. TChildClass::someProc(Integer) die Direktive 'reintroduce' hinzufügt

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...
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 11:04
In der Hilfe von meinem Delphi XE ist diese Compiler-Warnung ganz gut erklärt und 3 Dinge zum Vermeiden der Warnung angegeben.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 11:10
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (25. Nov 2013 um 11:14 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 12:26
In der Hilfe von meinem Delphi XE ist diese Compiler-Warnung ganz gut erklärt und 3 Dinge zum Vermeiden der Warnung angegeben.
Die drei Punkte sind
  1. [Passt nicht, da keine Überladung]
  2. "Dann Überladen sie halt nicht"
  3. "Verwenden Sie reintroduce um die Warnung zu unterdrücken"

Mein Punkt ist nur, dass hier nichts verdeckt wird und der Compiler mit seiner Warnung nicht Recht hat.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 12:32
Mach Dir doch mal den QC-Spaß...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 13:36
Mach Dir doch mal den QC-Spaß...
Ich bitte sogar darum!

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 16:15
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
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 16:33
Gibt's wohl schon öfters, wie hier z.B. http://qc.embarcadero.com/wc/qcmain.aspx?d=106026
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Frage zu overload + reintroduce

  Alt 25. Nov 2013, 19:13
"and u can see it in tests"

Etwas ungeschickt beschrieben aber ja, genau das ist es. Danke.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Frage zu overload + reintroduce

  Alt 23. Mai 2014, 22:39
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:
[dcc32 Warnung] soTypes.pas(104): W1010 Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TBase'
[dcc32 Fehler] soTypes.pas(104): E2169 Felddefinition nicht erlaubt nach Methoden oder Eigenschaften
[dcc32 Fehler] soTypes.pas(104): E2029 ',' oder ':' erwartet, aber ';' gefunden
[dcc32 Fehler] soTypes.pas(105): E2029 Typ erwartet, aber 'DESTRUCTOR' gefunden
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 11:24 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