Da quello che sono riuscito a capire (usa i tag code la prossima volta per postare il codice) se chiami la funzione in questione così
non va e il compilatore ti dicecodice:list_insert(A[0], init(ele1));
mentre invece cosìcodice:26 \main.cpp invalid initialization of non-const reference of type 'NODO*&' from a temporary of type 'NODO*' 20 \list.h in passing argument 2 of `void list_insert(NODO*&, NODO*&';)'
non hai problemi, giusto?codice:NODO* provaele1= init(ele1); list_insert(A[0], provaele1);
Se è così, mi sembra anche abbastanza normale. Se la funzione list_insert() la definisci così
quando la vai a richiamare, come secondo parametro devi passare necessariamente una variabile, non un valore costante, perché questo dovrà risultare modificabile all'interno della funzione (essendo un parametro di input/output). Per questo, se richiami la funzione così:codice:void list_insert(NODO* &lista,NODO* &x)
verrà prima eseguita init(ele1) che restituirà un puntatore a NODO (es: 0x1234), e questo verrà passato come valore costante (letterale) alla funzione, risultando quindi non modificabile. Quindi o elimini il riferimento nel prototipo della funzione oppure ricorri alla soluzione che hai individuato tu stesso con una variabile da passare per riferimento.codice:list_insert(A[0], init(ele1));

Rispondi quotando