Pagina 1 di 1

c++ lista dentro map problema

Inviato: mar 7 mag 2013, 10:29
da rfringuello89
Salve a tutti, mi sto affacciando nel mondo c++. Per risolvere un problema ho una map di oggetti Foo i quali contengono al loro interno una lista di altri oggetti Custom diversi dai precedenti.
Per intenderci:
.....
class Foo{
.....
private:
std::list <Custom> lista;
.....
};
....
main(){
...
std::map<string, Foo> mappa;
...
};

Il mio problema è nell'aggiunta di elementi alle varie liste degli elementi Foo infatti quando dalle funzioni di inserimento in lista inserisco uno o più elementi, al ritorno al main non ci sono elementi nella lista. Questo presumo accada in quanto prima cerco l'elemento Foo che mi serve tramite .find(key) e ne creo una copia su cui lavorare e, essendo una copia, l'elemento della map non viene in realtà modificato.
Vorrei qualche consiglio su come agire in questo caso sperando di essermi spiegato al meglio!

Re: c++ lista dentro map problema

Inviato: mar 7 mag 2013, 11:14
da legura
non è che stai lavorando su una copia di 'Mappa' ?

del tipo:

void
inserisci_in_mappa(std::map<string, Foo> m )
{
// le modifiche a m sono locali alla funzione
}

void
inserisci_in_mappa_2(std::map<string, Foo>* m )
{
// le modifiche a m saranno visibili anche in main
}



main(){
...
std::map<string, Foo> mappa;

// mappa viene modificato
inserisci_in_mappa_2(mappa ) ;

// mappa NON viene modificato, perchè la funzione lavora su una copia sua locale di mappa
inserisci_in_mappa(mappa ) ;



};

Re: c++ lista dentro map problema

Inviato: mar 7 mag 2013, 11:37
da rfringuello89
Salve, grazie per la risposta. Penso di aver risolto, l'errore era banale e sintattico! La risposta è stata molto utile confermandomi che questi tipi di dato devono essere passati per riferimento.