TList verwalten
-
Hi.
Ich habe eine Custom Komponente und möchte gern damit arbeiten und etwas optimieren. Ich habe jetzt vermutlich nur ein casting Problem.
myKomp = class(TComponent) myKompList = class(TList)
Jetzt möchte ich eine eigene Liste erstellen, dort myKomp's (nach einer Sortierung) hinzufügen und anschliessend auf die myKomp zugreifen.
myKompList *sList = new myKompList(); sList->Add(Shape1); sList->Add(Shape2); sList->Add(Shape3); myKomp *myK = reinterpret_cast<myKomp *>(sList[i]); // FEHLER: Typenumwandlung nicht zulässig. Memo1->Lines->Add(block->Name);
Kennt sich jemand damit eventuell aus? Wäre echt Klasse, da ich nicht wirklich weiter weiß.
Alternativ würde ich sonst auf vector zurückgreifen.
-
Hi,
probier mal so:
myKomp* myK = (myKomp*)sList->Items[i];
mfg
kpeter
-
Bitte keine C-Casts verwenden...
Sollte das nicht eher ein dynamic_cast sein? Schließlich sind die Zeiger in der Liste doch vom Typ void.
-
Eher reinterpret_cast. Ein dynamic_cast sollte bei void-Pointern nicht funktionieren.
-
myKomp* myK = static_cast <myKomp*> (sList->Items[i]);
-
Jaja, ich und meine dürftigen Kenntnisse...
Ihr habt beide recht, sowohl reinterpret_cast, als auch static_cast funktionieren. Nut eben dynamic_cast nicht...