Pages: [1]   Go Down
Print
Author Topic: Allocare dinamicamente oggetti all'interno di funzioni  (Read 2930 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Blonic
Forumista
***
Offline Offline

Gender: Male
Posts: 868



WWW
« on: 23-02-2013, 19:37:21 »

Salve, sto lavorando ad una lista di template. Quello che ho fatto finora funziona ma vorrei togliermi dei dubbi su eventuali problemi che potrebbe presentare.
In sintesi funziona così: ho definito Lista<T> e Nodo<T> in modo tale che mi basta scrivere
Code:
Lista <int> l;
l.append(4);
l.append(2);
l.append(16);
Per appendere elementi alla lista (la funzione append crea il nuovo nodo e lo aggiunge dopo la coda).
Ogni Nodo ha il valore T, un puntatore al successivo nodo (Nodo<T> * next), e i soliti metodi intuitivi set/get che non sto a descrivere.

L'asino casca all'interno della funzione append:
Code:
template <class T> void Lista<T>::append(T t){
     Nodo<T> * new_nodo = new Nodo<T>(t);
     if(empty()) head = tail = new_nodo;
     else {
           tail->setnext(new_nodo);
           tail = new_nodo; }
     items++;
}
Il mio dubbio sorge alla seconda riga. Io vorrei che il codice creasse automaticamente i nodi per cui ho pensato di creare un nuovo nodo all'interno di append, io sapevo che una cosa del genere fosse illegale (cioè che l'oggetto sarebbe invisibile fuori dalla funzione). Infatti se uso l'allocazione statica
Code:
Nodo<T> new_nodo(t)
al suo posto il codice compila ma non ho modo di accedere a questi nodi, invece con l'allocazione dinamica và perfettamente.

Avrò problemi o vado bene?
« Last Edit: 23-02-2013, 22:42:44 by Stai Zitto » Logged
Pages: [1]   Go Up
Print
Jump to: