Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Itererare su enum

    salve!
    sono alle prese con questo enum:
    codice:
    enum enumMenu {
        ULTIME_ENTRATE = 1, ULTIME_USCITE = 2, AGGIUNGI_ENTATA = 3, EXIT = 0
    };
    vorrei iterare su enum e stampare i valori.
    ho provato diverse soluzioni, ma tutte mi danno errori o non mi danno nulla.
    ad esempio il mio ultimo tentativo non stampa nulla:
    codice:
    #include <cstdlib>
    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    enum enumMenu {
        ULTIME_ENTRATE = 1, ULTIME_USCITE = 2, AGGIUNGI_ENTATA = 3, EXIT = 0
    };
    
    int main(int argc, char** argv) {
        for (int i = 0; i < EXIT; i++) {
            cout << enumMenu(i) << endl;
        }
        return 0;
    }
    come si può iterare su enum??

  2. #2
    ok ho capito che nn mi stampa nulla perchè ho assegnato dei valori di default alle voci.
    se cambio così mi stampa il numero indice di ogni voce:
    codice:
    enum enumMenu {
        ULTIME_ENTRATE, ULTIME_USCITE, AGGIUNGI_ENTATA, EXIT
    };
    solo che a me seriverebbe assegnare un valore di default a ciascuna voce.
    come posso fare??

  3. #3

  4. #4
    Qui ci sono possibili soluzioni alternative nei casi in cui un enum "non basta" (come nel tuo caso).
    Ad ogni modo se il tuo scopo è semplicemente quello di iterare in modo continuo fra valori interi allora puoi adottare soluzioni molto più semplici:

    1) Se gli elementi presenti nell'enum sono pochi allora puoi semplicemente sostituire il tuo loop con uno switch-case.
    2) Se gli elementi sono molti ed iteri sempre in modo lineare (es: con un for) pioi pensare di sostituire il tuo Enum con un semplice vettore di interi.
    3)Se questo era solo un esempio e tu puoi chiamare esplicitamente i campi dell'enumeratore allora il problema non si pone proprio:
    codice:
    cout << ULTIME_USCITE
    Stamperà il valore intero corrispondente a ULTIME_USCITE (nel tuo esempio 2)

    Per qualsiasi situazione più complessa ti consiglio invece di seguire il link di cui sopra

  5. #5
    intanto grazie a entrambi per le risposte!!

    Originariamente inviato da MegaAlchimista
    2) Se gli elementi sono molti ed iteri sempre in modo lineare (es: con un for) pioi pensare di sostituire il tuo Enum con un semplice vettore di interi.
    alla fine ho seguito quest'altra strada, però usando una map invece di un vector.

    ciao!!

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.