PDA

View Full Version : [C++] enum casuale


lcpreben
05-02-2011, 12:55
Salve a tutti.
Devo fare un programma in C++ che è composto da strutture di cui una contenente una variabile di tipo enum, così composta:
enum {Ricevitore, Satellite} Header;
Bene, orail testo chiede di creare una funzione che restituisce la struttura; per il dato Header, dice:
Header numero casuale tra 0 ed 1 [0=Ricevitore; 1=Satellite]
Il punto è questo. Come generare un numero casuale tra 0 e 1 del tipo enum?

Ho provato a creare una funzione random ed applicarla, ma il compilatore restituisce un errore:
int random(int min, int max) {
srand(time(0));
int r=rand()%((max-min)+1)+min;
return r;
}

Header=random(0,1);

tuccio`
05-02-2011, 13:07
che errore? non è che ti sei solo dimenticato di scrivere typedef prima di enum?

lcpreben
05-02-2011, 13:14
che errore? non è che ti sei solo dimenticato di scrivere typedef prima di enum?

la variabile enum è all'interno di una struttura (typedef struct TipoMessaggio{.......}), non dovrebbero esserci errori.
L'errore dice invalid conversion from `int' to `TipoMessaggio::<anonymous enum>'

tuccio`
05-02-2011, 13:29
ho capito ora che è c++ e non c

e scopro sempre ora che in c++ le regole dell'enum sono diverse e quella conversione, che in c è legale, non si può fare

empiricamente pare che così vada:


enum TipoMessaggio::Header h = TipoMessaggio::Header(random(0 , 1));


ma non chiedermi spiegazioni :asd:

lcpreben
05-02-2011, 13:37
ho capito ora che è c++ e non c

e scopro sempre ora che in c++ le regole dell'enum sono diverse e quella conversione, che in c è legale, non si può fare

empiricamente pare che così vada:


enum TipoMessaggio::Header h = TipoMessaggio::Header(random(0 , 1));


ma non chiedermi spiegazioni :asd:

Adesso provo, grazie intanto. ;)