class
<typeinfo>

std::bad_cast

class bad_cast;
Exception thrown on failure to dynamic cast

Type of the exceptions thrown by dynamic_cast when it fails the run-time check performed on references to polymorphic class types.

The run-time check fails if the object would be an incomplete object of the destination type.

Its member what returns a null-terminated character sequence identifying the exception.

Some functions in the standard library may also throw this exception to signal a type-casting error.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// bad_cast example
#include <iostream>       // std::cout
#include <typeinfo>       // std::bad_cast

class Base {virtual void member(){}};
class Derived : Base {};

int main () {
  try
  {
    Base b;
    Derived& rd = dynamic_cast<Derived&>(b);
  }
  catch (std::bad_cast& bc)
  {
     std::cerr << "bad_cast caught: " << bc.what() << '\n';
  }
  return 0;
}


Possible output:

bad_cast caught: St8bad_cast

Exception safety

No-throw guarantee: no members throw exceptions.

See also