Instanzen eigener Klasse in Liste speichern

Crash_Master

Grünschnabel
Hi Leute,

ich such jetzt schon den ganzen Abend, aber irgendwie finde ich nichts. Ich will mir einen kleinen Vokabeltrainer schreiben, und habe mir dazu 2 Klassen angelegt. Die eine ist die Klasse "Vokabel", die zweite die Klasse "VokabelListe".

Ziel des ganzen ist, das die Klasse "VokabelListe" eine Liste/Sammlung/... von lauter Instanzen der Klasse Vokabel.

Erwarten tu ich mir davon ein Verhalten welches bezweckt, das ich wie folgt auf die Daten zugreifen kann:

m_VokabelList->Items[0]->getVokabel();
---------------------------------------^^^^^^^^^^^^^^^
Diese Methode "getVokabel()" ist eine Methode welche in der Klasse Vokabel implementiert ist. Sie gibt als Rückgabewert einen String mit dem Text des Vokabel zurück.

Ich bekomme allerdings lauter Fehler.

Schreibe ich:
Vokabel *m_Voc;
m_Voc = m_VokabelList->Items[0];

dann bekomme ich einen Fehler das eine Konvertierung vom Typ TObject in Vokabel nicht möglich wären. Irgendwie muß es aber doch möglich sein wieder ein Vokabel-Objekt aus dieser Liste zu erhalten. Muß ja nicht mal dynamisch sein (wäre natürlich schon tool), reicht ja wenn ich die Möglichkeit habe aus diesen TObject´s wieder Vokabel-Objekte zu bekommen. Ich weiß ja was in der Liste gespeichert ist.


Schreibe ich:
ShowMessage(m_VokabelList->Items[0]->getVokabel());

dann bekomme ich die Fehlermeldung, das getVokabel() keine Funktion von TObject ist. Das ist mir eigentlich klar, allerdings weiß ich doch das es sich bei diesen TObjects um Vokabel-Objekte handelt, und diese haben nunmal die aufgerufene Funktion.

Kann mir jemand auf die Sprünge helfen und mir erklären wie ich den Listen erstelle welche als Container meiner eigenen Objekte dienen und aus diesen Listen dann auch meine ursprünglichen Objekte zurückbekomme.

Ciao Crash
 
Du mußt typecasten, dann geht es wunderbar...

Vokabel *m_Voc;
m_Voc = (Vokabel*) m_VokabelList->Items[0];

Greets
BadMourning
 
Ach ja, analog dazu dein ShowMessage, allerdings ist das etwas heftiger

ShowMessage( ( ( Vokabel*) m_VokabelList->Items[0] )->getVokabel() );

Greets
 
Zurück