Non riesco a figurarmi bene la situazione.
Nell'esempio che ho scritto, quando faccio return(p1), ritorna il puntatore p1 all'ultimo nodo, ok. Ma se a questo nel main, dopo la chiamata di funzione scrivo "cout << p1->val" (il campo val contiene un intero), perchè mi da errore? Dal momento che è stato ritornato un puntatore all'ultimo nodo, dovrebbe stamparmi il campo val dell'ultimo nodo, o no?
@SVNiko: in realtà avevo fatto un esempio banale per capire come funzionasse. Cioè: se in una funzione ritorniamo un bool, al main arriverà o true o false; se ritorniamo un intero n, al main arriverà il valore di n; se ritorniamo invece un puntatore a lista, cosa arriva al main?
Ti metto comunque un esempio di codice (nell'esempio che ti metto sotto c'è un inserimento in testa, ma il dubbio che ho è sempre quello):
ptr_lista head_insert (ptr_lista head, int el){
ptr_lista tmp_head ;
tmp_head = new lista ;
tmp_head->val = el ;
tmp_head->next = head ;
return(tmp_head) ;
}
cosa vuol dire return(tmp_head)?
io posso chiamare la funzione con:
cout << head_insert(head, el);
Cosa stamperebbe?
Capisco che è un po' contorta la cosa, ma ho questo enorme dubbio che non capisco proprio... poi magari è una cavolata, ma al momento non capisco proprio