Use dynamic_cast to convert object pointer to its subclass : object pointer « Class « C++






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

1.Use object pointer to reference virtual method
2.Use & to get object address
3.Call virtual function through object pointer
4.Change the object pointer behaviour
5.Using an array of class objects
6.Need reinterpret cast to perform pointer conversion from unrelated classes
7.Need reinterpret_cast to go from pointer to int and from int to pointer
8.Need reinterpret cast to perform reference conversion from unrelated classes -- static_cast doesn't work
9.Declare object pointer
10.pointers to base class
11.Demonstrating the class member access operators . and ->