Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97

    Dov'e' l' errore ?

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    ':quote:'
    Vi prego, AIUTATEMI !!!!
    Grazie 1000

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97

    Problema risolto !!!

    Ho trovato il problema !!!
    Tutto sta nel compilatore ( Developer Studio 97) che per default NON usa l' opzione Enable Run-Time Type Information. (/GR appunto...)
    Grazie comunque a tutti
    Ciao e... alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.