C++ dynamic_cast


Esempio

Usa dynamic_cast<>() come una funzione, che ti aiuta a buttare giù attraverso una gerarchia di ereditarietà ( descrizione principale ).

Se devi eseguire un lavoro non polimorfico su alcune classi derivate B e C , ma hai ricevuto la class A base class A , scrivi in ​​questo modo:

class A { public: virtual ~A(){} };

class B: public A
{ public: void work4B(){} };

class C: public A
{ public: void work4C(){} };

void non_polymorphic_work(A* ap)
{
  if (B* bp =dynamic_cast<B*>(ap))
    bp->work4B(); 
  if (C* cp =dynamic_cast<C*>(ap))
    cp->work4C(); 
}