Lorsque dynamic_cast va lever une exception en cas utilisé avec le pointeur?

Je suis à l'aide de dynamic_cast dans ma source de jeter pointeur comme quelque chose comme ci-dessous,

Base *base = here storing the pointer;

Derived *derived = dynamic_cast<Derived*>(base);

Dans le cas de la base n'a pas le pointeur de la hiérarchie de classe puis conversion échoue et renvoie la valeur NULL. Dans les prochaines lignes, je suis à la vérification de la valeur NULL. Donc pas de problèmes.

Je suis tombé sur un vidage sur incident, ma demande s'est écrasé en raison de la dynamic_cast throws exception.

Je sais dynamic_cast va lancer uniquement lorsqu'il est utilisé avec les types de référence.

Une idée de quand le dynamic_cast peut jeter l'exception lorsqu'il est utilisé avec pointeur que j'ai utilisé ci-dessus source?Lorsque dynamic_cast va lever une exception en cas utilisé avec le pointeur?

OriginalL'auteur Rajesh Subramanian | 2013-05-10