Ciao,
stavo provando per la prima volta l' utilizzo di typeid() per identificare il tipo di oggetto puntato dal puntatore alla classe base.
Se la gerarchia di classi e' polimorfica, in fase di compilazione ottengo il seguente warning:
warning C4541: 'typeid' used on polymorphic type 'class animali' with /GR-; unpredictable behavior may result
Ovviamente il programma si blocca in esecuzione.
Se la gerarchia delle classi NON e' polimorfica (rimuovo la parola chiave virtual), il programma funziona correttamente.
Vi allego il programmino:
codice:
#include <iostream>
#include <typeinfo>
using namespace std;
class animali
{
public:
virtual bool asd() { return false;}
};
class cane : public animali
{
//...
};
class gatto : public animali
{
public:
bool asd() { return true;}
};
void main(void)
{
animali *p, ob_anim;
gatto ob_gatto;
cane ob_cane;
p = &ob_anim;
cout <<" p punta ad un oggetto del tipo: ";
cout << typeid(*p).name() << endl;
p = &ob_gatto;
cout <<" p punta ad un oggetto del tipo: ";
cout << typeid(*p).name() << endl;
p = &ob_cane;
cout <<" p punta ad un oggetto del tipo: ";
cout << typeid(*p).name() << endl;
}
Qualcuno mi puo' aiutare ??
Grazie