Problem mit typeid()...exception bei dereferenzierten Pointern...p*



  • Hallo,

    ich habe folgendes problem mit dem typeid-operator. Ich habe eine Basis-Klasse BaseClass und davon abgeleitet mehrere Kindklassen, z.b. ChildB, ChildC etc.

    Desweiteren habe ich einen vector erstellt, der mit Pointern auf die Basis-klasse gefuellt werden kann (vector<BaseClass *> myelementList;).

    Den vector befuelle ich mit Elementen der Kindklassen, wobei ich das folgendermaßen mache:
    BaseClass * element = new ChildB;
    myElementList.push_back(element);

    Soweit, sogut...an anderer Stelle greife ich nun auf die Elemente zurueck und wuerde gerne einen runtime check auf die Klasse mithilfe von typeid machen. Ich mach das so:
    BaseClass * nextElement = myElementList[i];
    printf("Type ist: %s", typeid(nextElement).name);

    Wenn ich es so mache, gibt typeid die Basisklasse zurueck. Habe im Netz gefunden, dass man den pointer dereferenzieren muss, aber bei *nextElement bekomme ich ne exception (non_rtti_element)??...wie kann das denn sein???...hat jemannd ne idee??....ich hab auch in der Basisklasse ne virtual function eingebaut, aber leider ohne effekt...:(....

    Nur nebenbei, ich weiss schon wie ich ohne typeid auskomme, nur wuerde es mich schon brennend interessieren, was ich da falsch mache.....

    DANKE fuer jede antwort...



  • sorry, an alle...ich antworte mir einfach mal selbst.....das Problem war, dass man extra in den Projekteinstellungen unter C++/Language einstellen muss, dass das Runtime-typing funktioniert...;)...



  • Hatte das gleiche Problem und war schon fast am verzweifeln. Vielen Dank. 🙂


Anmelden zum Antworten