E2170 Impossible de redéfinir une méthode non virtuelle (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Vous avez essayé, dans une classe dérivée, de redéfinir une méthode de base qui n'était pas déclarée en type virtual.
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.
L'exemple ci-dessus provoque une erreur car Base.StaticMethod n'est pas déclarée en méthode virtual, et il est ainsi impossible de redéfinir sa déclaration.
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.
Le seul moyen pour enlever cette erreur de votre programme, lorsque vous n'avez pas les sources des classes de base, est d'enlever la spécification 'override' de la déclaration de la méthode dérivée. Si vous avez les sources des classes de base, vous pouvez, avec des précautions, changer la méthode de la base et la déclarer en type virtual. Néanmoins, vous devez savoir que cette modification peut considérablement affecter vos programmes.