[c++] problema funzione lista
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
Lo so che non ha senso fare una struct composta da un solo valore int, ma è per abituarmi a lavorare sulle struct
Funzione inserimento:
Mi da questo errore nella condizione del ciclo while:
Ma perchè mi da errore adesso, se qualche settimana fa funzionava tranquillamente??
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
[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:
avrei probabilmente dovuto guardare con più attenzione il tuo post..
EDIT:

ma io infatti le voglio confrontare, perchè voglio inserire gli elementi in ordine!
Perchè non si può fare?
Perchè non si può fare?
Stai confrontando una variabile di tipo int con una di tipo TipoDato e non lo puoi fare.. Piuttosto dovevi scrivere
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.
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.
"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..
Ma allora cambia IDE.. C'è di meglio. In effetti praticamente qualsiasi cosa è meglio.
Si ma poi l 'esame all'università lo devo fare con quello!
allora mi tocca usare quello...

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..
Il bello è che anche il professore ammette che per molti aspetti fa schifo... eppure continua a non cambiarlo!!
Si sarà affezionato
Si sarà affezionato
