c++ - dynamic_cast causing a bad_cast error -


this question has answer here:

i trying understand how dynamic_cast works. have class interfaceelement class menu derived it. in program, create no objects of class interfaceelement. when executing following code (executing line dynamic_cast, more precise), bad_cast exception thrown

void drawinterfaceelement(interfaceelement elem, int colour1, int colour2) {     if (elem.gettype()=="menu")     {         menu &cur = dynamic_cast<menu&>(elem);         this->drawmenu(&cur,colour1,colour2);     } } 

why?

take interfaceelement reference. incur slicing taking value, causing menu subobject lost. dynamic_cast cannot cast type, causing std::bad_cast thrown (if converting pointer, null pointer returned).

see what object slicing?


Comments