[C++] Pointer aus std::list

Online-Skater

Erfahrenes Mitglied
Hallo Tutorianer,

ich habe folgenden Codeabschnitt:
C++:
// get the Interface identified by param
Interface* Node::getInterface(uint8_t aIfId)
{
    // create pointer to Interface
    Interface* pInterface = 0;
    // search Interface-Id
    std::list<Interface>::iterator  it;
    for (it = interfaces.begin(); it != interfaces.end(); it++)
    {
        if (it->getId() == aIfId)
        {
            pInterface = *it;
        }
    }

    return pInterface;
}

Die Klasse Node hat als Member eine Liste mit Interfaces. Ich möchte nun per Interface-Id ein Interface aus der Liste als Zeiger haben, damit wenn dieses Interface nicht enthalten ist die Möglichkeit besteht einen Nullpointer zurückzugeben.
Das Problem ist nun das it zwar ein Zeiger auf das Listenelement ist aber eben kein Zeiger auf Interface. Ich schätze hier kommen die berühmt berüchtigten Casts zum Einsatz. Leider habe ich hier gar keine Erfahrung (nur mit gefährlichen C-Casts), daher wäre es nett wenn Ihr mir sagen könntet wie das hier in dem Beispiel aussehen müsste. Hoffe die Informationen reichen ;)

mfg
 
C++:
Interface* Node::getInterface(const uint8_t id)
{
    for (std::list<Interface>::iterator  it(interfaces.begin()); it != interfaces.end(); ++it)
        if (it->getId() == id) return &*it;
    
    return NULL;
}
...
 
Zurück