![]() |
BCB: Problem mit abstrakter Klasse
Hallo,
ich möchte im BCB zur Laufzeit eine TntComboBox erzeugen und mit Items füttern. Deren Typ ist TTntStrings. Ich versuche dazu, lokal TntStrings zu erzeugen und die später dann an die TntCombobox zu übergeben. Das Problem: mit dem Konstrukt
Code:
falle ich auf die Nase, weil TTntString eine abstrakte Klasse ist (bitte nicht fragen ob ich deren Sinn verstanden habe).
TTntStrings *MyItems;
MyItems = new TTntStrings; Muss ich, wenn ich nach diesem Prinzip vorgehen benutzen will immer den Weg über eine abgeleitete Klasse gehen? Käme mir etwas merkwürdig vor... Grüße, Messie |
Re: BCB: Problem mit abstrakter Klasse
Hi,
ja, ist genauso wie bei TStrings mit Delphi. Verwende TntStringList - falls vorhanden. mfG mirage228 |
Re: BCB: Problem mit abstrakter Klasse
Zitat:
Grüße, Messie |
Re: BCB: Problem mit abstrakter Klasse
Zitat:
Eine abstrakte Klasse kann Methoden besitzen, die sind abstrakt. Das heißt du hast erstmal eine ganz normale Klasse und für die gilt auch einfach alles, was für eine normale Klasse gilt. Dann kommt aber noch ein wenig dazu, nämlich die abstrakten Methoden. Für diese sagst du nur, wie sie heißen und was für Parameter sie bekommen. Wie sie implementiert werden, dass steht dann noch gar nicht fest, gibt einfach nur die Signatur. Würdest du jetzt eine Instanz von dieser Klasse erzeugen, würden diese nicht implementierten Methoden natürlich nicht funktionieren. Also geht das erst gar nicht. Wo ist der Sinn? Abstraktion. Jeder nicht abstrakte Nachfahre hat auf jeden Fall die Methoden mit diesen Signaturen, aber wie genau die implementiert werden, kann dir egal sein. Wenn du zum Beispiel Daten speichern willst, könntest du einen Container schaffen, der alles mögliche aufnimmt, einfach mit einem Add(Element : TElement) oder etwas C-Like add(TElement element). Ist dies eine abstrakte Methode der Klasse TContainer, könntest du jetzt eine THashList, TLinkedList und ein TArray ableiten, die zwar alle diese Methode implentieren, aber völlig anders jeweils. Die THashlist, könnte wirklich mit Hashcodes arbeiten, die TLinkedList eine verkettete Liste sein und nun ja, TArray ist auch klar. In deinem Programm benutzt du einfach nur ein TContainer und egal was du für einen Nachfahren bekommst, es würde funktionieren. Und dich interessiert in der Regel einfach nicht, wie gespeichert wird, hauptsache schnell und es funktioniert. Gruß Der Unwissende |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz