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.
