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.