Klassenzugehörigkeit eines Objekts herausfinden



  • Hallo,

    wie kann ich herausfinden, ob ein Objekt einer gewissen Klasse angehört?

    Das Szenario ist wie folgt:

    gemeinsame Klasse: CParent

    eine Klasse: CFalscheKlasse, erbt von CParent

    andere Klasse: CRichtigeKlasse (abstrakt), erbt auch von CParent
    Kind Klassen, die jeweils von CRichtigeKlasse erben: CChild1, CChild2

    Jetzt hab ich einen Zeiger: CParent *zeiger;

    Dieser Zeiger zeigt jetzt entweder auf ein CChild1 Objekt oder auf ein CChild2 Objekt oder auf ein CFalscheKlasse Objekt.
    Wie kann ich herausfinden, ob das Objekt von CRichtigeKlasse (also Child1/2) oder CFalschKlasse ist?

    In der Suche hab ich leider nix gefunden... weiß nicht wirklich, welche Suchbegriffe ich nehmen soll 😕

    Vielen Dank im Voraus!



  • Hallo

    hatten wir heute hier schon mal. Und auch zu dir : du solltest deine Basisklasse so designen, das du nicht wissen must, welchen Typ eine konkrete Instanz hat.

    bis bald
    akari



  • Ich würde nach dynamic_cast suchen 😉
    Da war doch heute schon was...
    Du musst RTTI aktivieren und dann so

    Child* pChild = dynamic_cast<Child*>(pParent);
    if (pChild == NULL)
    //es ist kein child
    else
    es ist ein child
    

    oder so

    try
    {
       Child& child = dynamic_cast<Child&>(parent);
       //richtige Klasse
    }
    catch(std::bad_cast_exception) //oder so ähnlich
    {
       //falsche Klasse
    }
    

Anmelden zum Antworten