Einzelnen Beitrag anzeigen

Der schöne Günther

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

Frage zu overload + reintroduce

  Alt 25. Nov 2013, 09: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