Mega Code Archive

 
Categories / C++ / Class
 

Use dynamic_cast to convert object pointer to its subclass

#include <typeinfo> #include <iostream> using namespace std; class Base{ public:   Base() {};   virtual ~Base() {} }; class Derived : public Base{ public:   Derived() {}   virtual ~Derived() {} }; int main(int argc, char** argv){   Base* b;   Derived* d = new Derived();   b = d;   d = dynamic_cast<Derived*>(b);   Base base;   Derived derived;   Base& br = base;   try {     Derived& dr = dynamic_cast<Derived&>(br);   } catch (bad_cast&) {     cout << "Bad cast!\n";   }   return (0); }