Nel presente post vedremo altri due metodi per creare dei nuovi tipi in C++, le unioni e le enumerazioni.
Le unioni (union) si creano esattamente come le strutture, tranne che un'istanza di un'unione può contenere un solo valore alla volta. E' più facile a farsi che a dirsi:
union Cifra {
int intero;
float decimale;
string letterale;
}; //ricordate di mettere il punto e virgola
Cifra assegno;
assegno.intero = 100; //ora assegno contiene un intero
assegno.letterale = "cento"; //ora assegno contiene una stringa, l'intero precedente viene cancellato
In altre parole un unione può contenere più tipi, ma solo uno alla volta.
Un'unione si rivela utile quando abbiamo a che fare con un dato che può essere di diversi tipi, ma mai contemporaneamente.
Le enumerazioni (enum) si creano anch'esse come le strutture, e servono a definire un nuovo tipo che può contenere solo determinati valori.
Per capire meglio torniamo all'esempio del nostro ipotetico videogioco.
Il nostro personaggio può acquisire delle abilità speciali mangiando dei funghetti colorati, ad esempio può volare o sparare palle di fuoco:
enum abilità {In poche parole i valori da noi definiti per la struttura abilità non sono altro che delle etichette assegnate ad una successione di numeri interi.
volo, palla_infuocata, fulmine
};
abilità superEroe;
superEroe = volo; //ora il nostro super eroe può volare
superEroe = fulmine; //ora ha perso l'abilità di volare in favore dei fulmini
superEroe = raggio_laser; //ERRORE: raggio_laser non è un valore consentito dall'enumerazione "abilità"
Ad esempio superEroe = volo equivale a superEroe = 0.
L'enumerazione non fa altro che fornirci la possibilità di utilizzare dei nominativi facili da ricordare, così da non dover tenere a mente che ad esempio, quando il nostro superEroe è uguale a 1, ha il potere del fulmine.
Volendo è possibile cambiare il valore numerico di default di un'enumerazione:
enum pari { due = 2, quattro = 4, sei = 6, otto = 8 };
Ora il primo valore dell'enumerazione non equivarrà a 0 ma a 2.
Nessun commento:
Posta un commento