ciao ragazzi in c++ esiste un operatore per controllare il tipo di un oggetto??
vorrei fare una cosa del genere :
codice:classeTipo x; if (x type classeTipo) cout<<"x è un oggetto della classeTipo"; else cout<<"x non è un oggetto della classeTipo";
ciao ragazzi in c++ esiste un operatore per controllare il tipo di un oggetto??
vorrei fare una cosa del genere :
codice:classeTipo x; if (x type classeTipo) cout<<"x è un oggetto della classeTipo"; else cout<<"x non è un oggetto della classeTipo";
typeof includendo typeinfo
attento che per i puntatori vale il tipo statico a meno che non siano polimorficodice:#include <typeinfo> if(typeof(var1) == tipeof(var2)) //sono dello stesso tipo if(typeof(var1) == typeof(TIPO)) //è del tipo TIPO
ciao seguendo il tuo consiglio ho scritto:
ma il compilatore mi segnala un errore.codice:do{ cout<<"Quanti chilometri percorrera' l'automobilista? : "; cin >> chilometri_percorsi_appoggio; }while(typeof(chilometri_percorsi_appoggio)!=typeof(int));
dice 103 main.cpp expected primary-expression before "typeof"
Come ti ha detto Stoicenko devi includere typeinfo.Originariamente inviato da melmar20
ciao seguendo il tuo consiglio ho scritto:
ma il compilatore mi segnala un errore.codice:do{ cout<<"Quanti chilometri percorrera' l'automobilista? : "; cin >> chilometri_percorsi_appoggio; }while(typeof(chilometri_percorsi_appoggio)!=typeof(int));
dice 103 main.cpp expected primary-expression before "typeof"
In ogni modo semanticamente dubito che il tuo programmino possa svolgere cio' che ti proponi. Il tipo di chilometri_percorsi_appoggio NON cambia in funzione di quello che l'utente ha digitato.
infatti probabilmente sarà visto come un char (non vorrei aver detto una castronata)
#include <typeinfo> l'ho messo.
quel ciclo do while, mi serve per controllare che l'utente abbia effettivamente inserito un intero, altrimenti deve ripetere l'inserimento
Ma se tu hai dichiarato chilometri_percorsi_appoggio come int, typeof(chilometri_percorsi_appoggio) sarà sempre uguale a typeof(int). Per verificare se è stato estratto correttamente un intero devi verificare se, dopo l'estrazione, è impostato o meno il failbit dello stream. Per cui:
.codice:int chilometri_percorsi_appoggio; //... do { cout<<"Quanti chilometri percorrera' l'automobilista? : "; cin.clear(); //resetta i bit di errore cin.sync(); //svuota il buffer di lettura cin >> chilometri_percorsi_appoggio; } while(cin.fail()); //true se ci sono stati errori di estrazione
Amaro C++, il gusto pieno dell'undefined behavior.
C'e' un equivoco ... tu hai capito che il typeof serva a testare il fatto che il valore inserito da tastiera sia un intero, mentre serve solo a controllare che il tipo di variabile sia un intero ...Originariamente inviato da melmar20
#include <typeinfo> l'ho messo.
quel ciclo do while, mi serve per controllare che l'utente abbia effettivamente inserito un intero, altrimenti deve ripetere l'inserimento
No MP tecnici (non rispondo nemmeno!), usa il forum.
ho capito, io pensavo potesse essere utilizzato come una funzione di controllo per i dati che si ricevono in input. Invece a quando pare devo scandire la stringa in ingresso e controllare carattere per carattere. giusto??
o magari c'è una funzione già implementata in c++ che mi facilita il compito??