Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442

    [C/C++] Numero di elementi in una enum

    Ciao a tutti, una domanda: c'è il modo di determinare a compile-time il numero di elementi in una enum, ovvero se io ho in un file
    codice:
    typedef enum{F1, F2, F3} index_t;
    e in un altro file un vettore di funzioni indicizzato tramite tale enum
    codice:
    int f1(int a) { cout << "f1 " << a << endl; }
    int f2(int a) { cout << "f2 " << a << endl; }
    int f3(int a) { cout << "f3 " << a << endl; }
    
    int main() {
      int (*functions[3])(int);
    
      functions[F1] = f1;
      functions[F2] = f2;
      functions[F3] = f3;
    }
    cosa posso mettere (a parte una #define) al posto di 3 nella dichiarazione del vettore functions, in modo che se aggiungo un nuovo "indice" alla enum automaticamente il vettore venga allocato per 4 invece di 3 senza dover cambiare il codice a manina.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Puoi scrivere

    codice:
    int (*functions[F3+1])(int);
    ovviamente inserendo comunque l'ultimo valore dell'enumerazione al posto di F3

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Buona soluzione, anche perchè da quello che ho letto googlando un pò sembra sia l'unica, il C non prevede nessun operatore che restituisca il numero di elementi in una enum.

    Grazie.

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.