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);
}
Related examples in the same category