E2170 Eine nicht-virtuelle Methode kann nicht überschrieben werden (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi)
Sie haben in einer abgeleiteten Klasse versucht, eine Basismethode zu überschreiben, die nicht als einer der virtuellen Typen deklariert war.
program Produce; type Base = class procedure StaticMethod; end; Derived = class (Base) procedure StaticMethod; override; end; procedure Base.StaticMethod; begin end; procedure Derived.StaticMethod; begin end; begin end.
In diesem Beispiel wird ein Fehler ausgelöst, weil Base.StaticMethod nicht als virtuelle Methode deklariert wurde und daher eine Überschreibung ihrer Deklaration nicht möglich ist.
program Solve; type Base = class procedure StaticMethod; end; Derived = class (Base) procedure StaticMethod; end; procedure Base.StaticMethod; begin end; procedure Derived.StaticMethod; begin end; begin end.
Die einzige Möglichkeit, diesen Fehler aus Ihrem Programm zu entfernen, wenn Sie nicht über den Quelltext für die Basisklassen verfügen, ist die Entfernung der override-Festlegung aus der Deklaration der abgeleiteten Methode. Wenn Sie über den Quelltext der Basisklasse verfügen, könnten Sie - nach sorgfältiger Überlegung - die Basismethode ändern und als virtuellen Typ deklarieren. Beachten Sie aber, dass diese Änderung eine drastische Auswirkung auf Ihre Programme haben kann.