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...


Anmelden zum Antworten