PDA

View Full Version : [C++] Realizzazione liste con cursore


guylmaster
12-11-2010, 18:18
Salve avrei un problema riguardo la realizazione di una lista con cursore.

Per chi non sapesse cos'è non è altro che una lista colleggata ma sviluppata in un array che funge da spazio per tutte le liste che si dichiareranno nel programma.

Il problema è proprio qui, l'oggetto lista avrà dichiarato dentro un array spazio di tipo static, in modo che ogni volta che crei un nuovo oggetto di tipo lista si possa condividere lo spazio. Il problema sorge però nell'inizializazione dello spazio.

Se inizializzo l'array nel costruttore dell'oggetto ogni nuovo oggetto che creo mi cancella tutto i dati degli oggetti precedenti e questo non è buono. Del resto non posso nemmeno lasciare all'utente l'onere di richiamare il metodo di inizializzazione perchè sarebbe una cosa "poco pulita".

Voi cosa consigliate? non c'è un modo dentro la classe per dire che se la variabile statica è appena stata creata che venga inizializata con un apposita funzione? Non c'è nessun modo quindi per accorgersi se la variabile statica è stata creata in precedenza o è stata appena creata e nel caso regolarsi di conseguenza con il lancio di una funzione di inizializazione?

Vi ringrazio in anticipo per l'attenzione,
Guylmaster.

tomminno
12-11-2010, 20:59
Non capisco il problema.
Se la variabile è statica sei obbligato ad inizializzarla fuori dal costruttore.

panzoun
14-10-2012, 10:48
Ciao guylmaster io ho lo stesso dubbio che avevi circa 2 anni fa....posso chiederti come hai risolto?Grazie!!

guylmaster
14-10-2012, 16:29
Ciao guylmaster io ho lo stesso dubbio che avevi circa 2 anni fa....posso chiederti come hai risolto?Grazie!!

Praticamente invece di dichiarare un Array spazio nella classe della Lista, spazio lo dichiaravo come un oggetto, qualcosa del tipo:


static ClasseSpazio<T> spazio


Così facendo in Lista non facevo nulla, l'inizializzazione la facevo invece nel costruttore di ClasseSpazio. Il risultato era che essendo "spazio" statica il suo costruttore veniva richiamato in automatico solo una volta alla creazione della Lista ed il gioco è fatto :fagiano: