![]() |
Delphi-Version: XE2
Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Folgendes Beispiel:
Header:
Delphi-Quellcode:
type
TSomeAbstractClass = class abstract procedure someAbstractMethod(); virtual; abstract; end; TSomeChildClass = class(TSomeAbstractClass) // keine Implementation von someAbstractMethod() end; Implementation
Delphi-Quellcode:
procedure noAbstractError();
type TMyClassType = class of TSomeAbstractClass; const myClass: TMyClassType = TSomeChildClass; var myObject: TSomeAbstractClass; begin myObject := myClass.Create(); // Kein Fehler oder Warnung myObject := TSomeChildClass.Create(); // Compilerfehler/-Warnung end; Was kann ich dagegen tun? Ich möchte einmal oben auf einen Block festgelegt haben, eine Instanz welcher Klasse erstellt wird und nicht in die Falle tappen, aus Versehen Klassen zu instanziieren, die nicht alle Methoden implementiert haben. |
AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Nix. Siehe
![]() Zitat:
|
AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Nein, nein.
Ich kann ja mit der Compilerwarnung "Konstruierende Instanz enthält abstrakte Methode" mich ja immerhin davor warnen lassen oder sogar einen Fehler draus machen. Es geht darum, dass der Kerl es (auf dem ersten Weg) überhaupt nicht merkt. Anhang: Die Lösung war einfacher als man denkt:
Delphi-Quellcode:
wird zu
type
TMyClassType = class of TSomeAbstractClass; const myClass: TMyClassType = TSomeChildClass;
Delphi-Quellcode:
und alles läuft, wie ich es mir vorgestellt habe.
type
TMyClassType = TSomeChildClass |
AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Zitat:
Aber nein, da macht man lieber ![]() |
AW: Der Compiler merkt nicht, dass eine Klasse nicht vollständig implementiert ist
Zitat:
Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz