Je suis familier avec le C++ RTTI, et de trouver le concept intéressant.
Encore, il existe beaucoup d'autres façons d'en abuser que de l'utiliser correctement (RTTI-commutateur d'effroi vient à l'esprit). En tant que développeur, j'ai trouvé (et utilisé) seulement deux viable utilise pour cela (plus exactement, un an et demi).
Pourriez-vous partager quelques-uns des moyens RTTI est une solution viable à un problème, avec des exemples de code/code pseudo-inclus?
Remarque: L'objectif est de disposer d'un référentiel de viable exemples, un développeur junior peuvent consulter, de critiquer et d'apprendre.
Edit: Vous trouverez ci-dessous le code à l'aide de C++ RTTI
// A has a virtual destructor (i.e. is polymorphic)
// B has a virtual destructor (i.e. is polymorphic)
// B does (or does not ... pick your poison) inherits from A
void doSomething(A * a)
{
// typeid()::name() returns the "name" of the object (not portable)
std::cout << "a is [" << typeid(*a).name() << "]"<< std::endl ;
// the dynamic_cast of a pointer to another will return NULL is
// the conversion is not possible
if(B * b = dynamic_cast<B *>(a))
{
std::cout << "a is b" << std::endl ;
}
else
{
std::cout << "a is NOT b" << std::endl ;
}
}