Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    [C++] operatore che controlla il tipo di un oggetto

    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";

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    typeof includendo typeinfo

    codice:
    #include <typeinfo>
    
    if(typeof(var1) == tipeof(var2)) //sono dello stesso tipo
    
    if(typeof(var1) == typeof(TIPO)) //è del tipo TIPO
    attento che per i puntatori vale il tipo statico a meno che non siano polimorfi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ciao seguendo il tuo consiglio ho scritto:

    codice:
    do{
        cout<<"Quanti chilometri percorrera' l'automobilista? : ";
        cin >> chilometri_percorsi_appoggio;
        }while(typeof(chilometri_percorsi_appoggio)!=typeof(int));
    ma il compilatore mi segnala un errore.

    dice 103 main.cpp expected primary-expression before "typeof"

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    #include <typeinfo>

    l'hai messo?

  5. #5
    Originariamente inviato da melmar20
    ciao seguendo il tuo consiglio ho scritto:

    codice:
    do{
        cout<<"Quanti chilometri percorrera' l'automobilista? : ";
        cin >> chilometri_percorsi_appoggio;
        }while(typeof(chilometri_percorsi_appoggio)!=typeof(int));
    ma il compilatore mi segnala un errore.

    dice 103 main.cpp expected primary-expression before "typeof"
    Come ti ha detto Stoicenko devi includere typeinfo.

    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.

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    infatti probabilmente sarà visto come un char (non vorrei aver detto una castronata)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    #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

  8. #8
    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.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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
    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 ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    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??

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 © 2025 vBulletin Solutions, Inc. All rights reserved.