Come si verifica in fase di esecuzione se un oggetto è di tipo ClasseA o di tipo derivato ClassB? In un caso, devo gestire entrambi i casi separatamenteVerifica il tipo derivato (C++)
ClassA* SomeClass::doSomething (ClassA*)
{
if(/* parameter is of type base class */) {
} else if { /* derived class */) {
}
}
Forse potrei dire che la classe derivata ClassB ha alcune capacità speciali. Ma come posso farlo senza modificare la classe ClassA esistente?
ClassA non dovrebbe aver bisogno di sapere nulla di ClassB. –
Il controllo dei tipi di classe, in generale, è un indicatore di una progettazione errata. Vedi il modello di design * Visitor * per un'alternativa. Studia anche sul polimorfismo. –