![]() |
Exception abstrakter Fehler
Hallo,
kann mir jemand erklären was ein abstrakter Fehler ist? Wie krieg ich raus wer oder was ihn ausgelöst hat? ( tcanvas3d erzeugt diesen Fehler,wenn ichs verwenden will ) nimoee |
Re: Exception abstrakter Fehler
Ein Blick in die Hilfe:
Zitat:
|
Re: Exception abstrakter Fehler
Moin Nimoee,
Zitat:
TCanvas3D kenne ich jetzt nicht, aber die Wahrscheinlichkeit ist gross, dass es sich dabei um eine abstrakte Basisklasse handelt (von der man in der Regel keine Instanzen bilden sollte) Bei als abstract deklarierte Methoden existiert nur der Kopf der Methode (also Name und Parameterliste, falls vorhanden), aber die Methode ist ansonsten nicht implementiert, sondern wird erst in einer abgeleiteten Klasse "mit Leben gefüllt". |
Re: Exception abstrakter Fehler
Danke Chris,
hab was dazugelernt! Was mir unklar ist, warum erstellt man eine vollkommen leere Basisklasse. Was hat das für einen Sinn? Wenn die 3d Basisfunktionen dagewesen wären, könnt ich das ja noch verstehen, aber so, die Komponente tcanvas3d ist zu nichts zu gebrauchen, ausser als Erinnerungshilfe. Nochmals Danke nimoee |
Re: Exception abstrakter Fehler
Moin Nimoee,
doch, die Klasse ist noch für anderes zu gebrauchen. Beispielsweise kannst Du diese Klasse als Typ für einen Parameter bei einem Funktions-/Prozeduraufruf verwenden. Als Parameter kann man dann alle Werte übergeben deren Typ von diesem Abgeleitet ist. Mein Standardbeispiel hierfür ist TStrings (auch eine abstrakte Klasse). Hiervon sind, u.a., TStringList, und TMemo.Lines abgeleitet. Will man nun beide Arten von Stringslisten als Parameter zulassen, kann man entweder mit overload zwei Deklarationen erstellen, oder man nimmt als Parametertyp die übergeordnete Klasse TStrings. Sinn machen abstrakte Methoden in Klassen, die als Basisklassen konzipiert sind, bei denen also grundsätzlich geplant ist abgeleitete Klassen zu erstellen. Wenn hierbei klar ist, dass bestimmte Methoden enthalten sein müssen/sollen, diese aber je nach Art der abgeleiteten Klasse anders ausgestaltet sein müssen, macht es nicht unbedingt Sinn hier in der Basisklasse schon eine Funktionalität zu implementieren. |
Re: Exception abstrakter Fehler
aber vollkommen leer? Nix drin?
nimoee |
Re: Exception abstrakter Fehler
Genau das hab ich in deinem andren Thread auch schon versucht zu erklären.. mein Lieblingsbeispiel für die Sinnhaftigkeit von abstrakten Klassen ist TStream und alle davon abgeleiteten Streams - TFileStream, TMemoryStream, TOleStream, TBlobStream, ....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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