std::bad_cast (3) - Linux Manuals

std::bad_cast: std::bad_cast

NAME

std::bad_cast - std::bad_cast

Synopsis


Defined in header <typeinfo>
class bad_cast : public std::exception;


An exception of this type is thrown when a dynamic_cast to a reference type fails the run-time check (e.g. because the types are not related by inheritance), and also from std::use_facet if the requested facet does not exist in the locale.
 std-bad cast-inheritance.svg
Inheritance diagram

Member functions


              constructs a new bad_cast object
constructor (public member function)


Inherited from std::exception

Member functions


destructor destroys the exception object
             (virtual public member function of std::exception)
[virtual]


what returns an explanatory string
             (virtual public member function of std::exception)
[virtual]

Example


// Run this code


  #include <iostream>
  #include <typeinfo>


  struct Foo { virtual ~Foo() {} };
  struct Bar { virtual ~Bar() {} };


  int main()
  {
      Bar b;
      try {
          Foo& f = dynamic_cast<Foo&>(b);
      } catch(const std::bad_cast& e)
      {
          std::cout << e.what() << '\n';
      }
  }

Possible output:


  Bad dynamic cast