[c++] problema funzione lista

Oo.Stud.ssa.oO
Ciao a tutti..
il compilatore mi da un errore che non capisco sulla funzione di inserimento in ordine di una lista semplice, il codice è questo
typedef struct TipoDato{
        int x;
};

struct El{
        TipoDato info;
        struct El *next;
};

typedef struct El ElemLista;
typedef ElemLista *ListaDiElem;


Lo so che non ha senso fare una struct composta da un solo valore int, ma è per abituarmi a lavorare sulle struct
Funzione inserimento:
void InsertInOrder(ListaDiElem *lista, TipoDato value){
     ElemLista *punt,*puntcorrente,*puntprecedente;
     puntcorrente = *lista;
     puntprecedente= NULL;
     while(puntcorrente!=NULL && value.x>puntcorrente->info){
                               puntcorrente = puntprecedente;
                               puntprecedente = puntprecedente->next;
                               }
       punt = (ElemLista *)malloc(sizeof(ElemLista));
       punt->info=value;
       punt->next = puntcorrente;
       if(puntprecedente!=NULL){   
                                   puntprecedente->next = punt;
                                   }else{
                                         *lista=punt;}   
     
     }

Mi da questo errore nella condizione del ciclo while:

no match for 'operator>' in 'value > puntcorrente->El::info' 


Ma perchè mi da errore adesso, se qualche settimana fa funzionava tranquillamente?? :|

Risposte
apatriarca
[strike]Hai dimenticato di inserire - prima di > facendo credere al compilatore che tu stia cercando di confrontare le due espressioni invece di unirle con un ->.[/strike]
EDIT: :oops: avrei probabilmente dovuto guardare con più attenzione il tuo post..

Oo.Stud.ssa.oO
ma io infatti le voglio confrontare, perchè voglio inserire gli elementi in ordine!
Perchè non si può fare?

apatriarca
Stai confrontando una variabile di tipo int con una di tipo TipoDato e non lo puoi fare.. Piuttosto dovevi scrivere
value.x > puntcorrente->info.x

Riguardo al "come mai adesso non funziona ma qualche settimana sì", hai per caso cambiato compilatore o compilato il codice diversamente? Sinceramente non ricordo se lo standard C permette di fare qualcosa del genere, ma sono abbastanza sicuro che il C++ non lo permetta.

Oo.Stud.ssa.oO
"apatriarca":
Stai confrontando una variabile di tipo int con una di tipo TipoDato e non lo puoi fare.. Piuttosto dovevi scrivere
value.x > puntcorrente->info.x

Riguardo al "come mai adesso non funziona ma qualche settimana sì", hai per caso cambiato compilatore o compilato il codice diversamente? Sinceramente non ricordo se lo standard C permette di fare qualcosa del genere, ma sono abbastanza sicuro che il C++ non lo permetta.


-.- vero....grazie!!
no è tutto uguale a prima! Sinceramente con DEV non mi ci trovo proprio..

apatriarca
Ma allora cambia IDE.. C'è di meglio. In effetti praticamente qualsiasi cosa è meglio.

Oo.Stud.ssa.oO
Si ma poi l 'esame all'università lo devo fare con quello! :) allora mi tocca usare quello...

apatriarca
Come abbia fatto Dev C++ a diventare così amato dai professori universitari è un enorme mistero.. Probabilmente non hanno mai programmato seriamente in vita loro, almeno su Windows. Se no saprebbero che fa schifo..

Oo.Stud.ssa.oO
Il bello è che anche il professore ammette che per molti aspetti fa schifo... eppure continua a non cambiarlo!!
Si sarà affezionato :)

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