[C++] allocazione dinamica e funzione put d una coda

Oo.Stud.ssa.oO
Ciao a tutti,
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
vict85
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
typedef struct { 
...
 } NomeStruct;
e
struct NomeStruct{ 
...
 };
sono equivalenti.

Oo.Stud.ssa.oO
Oh è vero grazie 1000!!!! :smt023 :smt023 :smt023

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!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.