Se ho queste classi senza funzioni virtuali:
codice:
class A {
public: 
int a;
};

class B : public A {
public:
int b;
};

class C : public A {...};
Qual'è il motivo logico perchè non possa fare:
codice:
A *funzione(...) {...}

(in un'altra funzione:)
A *puntatore = funzione(...);
B *puntB = dynamic_cast<B*>(puntatore);
if(puntB) { cout << puntB->b;)
in che modo posso risolvere un problema simile?