Visualizzazione dei risultati da 1 a 3 su 3

Hybrid View

  1. #1
    1. Direi anch'io il primo per lo stesso motivo.
    2. A priori, non c'è un modo; in C++ non c'è reflection, e le enum sono giusto un gradino sopra delle costanti messe in un namespace, per cui non c'è modo di sapere se un valore è tra quelli validi di una enum. Un idioma che si usa spesso per le enum senza "buchi" è fare una cosa del genere:
    codice:
    enum NuovoEnum {
        primo,
        secondo,
        terzo,
        Max_NuovoEnum
    };
    E se devi loopare sui valori ammessi per NuovoEnum basta fare
    codice:
    for(int i=0; i<Max_NuovoEnum; ++i)
    (ovviamente bisogna sempre avere cura che Max_NuovoEnum rimanga in fondo a tutto)
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    177
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    1. Direi anch'io il primo per lo stesso motivo.
    2. A priori, non c'è un modo; in C++ non c'è reflection, e le enum sono giusto un gradino sopra delle costanti messe in un namespace, per cui non c'è modo di sapere se un valore è tra quelli validi di una enum. Un idioma che si usa spesso per le enum senza "buchi" è fare una cosa del genere:
    codice:
    enum NuovoEnum {
        primo,
        secondo,
        terzo,
        Max_NuovoEnum
    };
    E se devi loopare sui valori ammessi per NuovoEnum basta fare
    codice:
    for(int i=0; i<Max_NuovoEnum; ++i)
    (ovviamente bisogna sempre avere cura che Max_NuovoEnum rimanga in fondo a tutto)
    Troppo gentile rispondere il giorno di Natale! Grazie.
    E soprattutto, continuo a scoprirne di nuove su C++, e più lo conosco, più c'è da conoscere.

    Grazie di nuovo, e auguri!

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