[C++] allocazione dinamica e funzione put d una coda
Ciao a tutti,
non capisco perchè mi da errore in questa funzione put:
Nel main : $
la funzione AssignOperatore è questa:
$
TipoCall è così definito:
e TipoCoda è:
$
L'errore che mi da è questo:
Se il problema è che operatore 1 è nell' heap, chi mi sa dire come devo passarlo nella funzione??
non capisco perchè mi da errore in questa funzione put:
Nel main : $
int i,j; TipoCall Call; TipoCodaPtr Operatore1; Operatore1= new TipoCoda[N1]; TipoCodaPtr Operatore2[N2]; for(i=0;i<N2;i++){ Operatore2[i]=new TipoCoda[30]; } for(j=0;j<K;j++){ Call=CreaCall(); AssignOperatore(Operatore1, N1, Call); }$
la funzione AssignOperatore è questa:
$
void AssignOperatore(TipoCodaPtr Op1[],int d TipoCall Call){ int i; for(i=0;i<d;i++){ if(Op1[i]->N<Op1[i]->dim){ Op1[i]->s[Op1[i]->tail]=Call; Op1[i]->N++; Op1[i]->tail++; } } }
TipoCall è così definito:
typedef struct TipoCall{ int IDCall; TipoRich TipoRichiesta; int Urgenza; char Richiesta[MAXLUN];
e TipoCoda è:
$
typedef struct TipoCoda{ TipoCall* s; int dim; int N; int head; int tail; TipoCoda(){ dim=5; N=0; head=0; tail=0; s=new TipoCall[dim]; }
L'errore che mi da è questo:
cannot convert `TipoCoda*' to `TipoCoda***' for argument `1' to `void AssignOperatore(TipoCoda***, int, TipoCall)'$
Se il problema è che operatore 1 è nell' heap, chi mi sa dire come devo passarlo nella funzione??
Risposte
Il problema è che Operatore1 è un array di TipoCoda e non un array di TipoCodaPtr. Tra l'altro, una volta cambiato il tipo di Op1, puoi scrivere tranquillamente Op1.N e così via.
Che vuoi implementare? Sinceramente penso che il tutto possa essere implementato in modo più semplice.
Detto questo ti informo che il C++, al contrario del C, fa il typedef delle strutture in automatico. Insomma
Che vuoi implementare? Sinceramente penso che il tutto possa essere implementato in modo più semplice.
Detto questo ti informo che il C++, al contrario del C, fa il typedef delle strutture in automatico. Insomma
typedef struct { ... } NomeStruct;e
struct NomeStruct{ ... };sono equivalenti.
Oh è vero grazie 1000!!!!
Per quanto riguarda il typedef sono consapevole di questa cosa, ma all'università all'esame vogliono che facciamo così, altrimenti tolgono punti.. valli a capire!!



Per quanto riguarda il typedef sono consapevole di questa cosa, ma all'università all'esame vogliono che facciamo così, altrimenti tolgono punti.. valli a capire!!