Attualmente sto lavorando su un grande progetto e ho bisogno di usare weak_ptr
invece di shared_ptr
.Avendo un vettore di weak_ptr, voglio restituire un vettore di shared_ptr
Ecco il mio problema.
Ho una classe denominata Casa con un attributo: vector<boost::shared_ptr<People>> my_people
. Desidero modificare questo membro dati per essere vector<boost::weak_ptr<People>> my_people
.
mio getter era
vector<boost::shared_ptr<People>>& getPeople() const
{
return my_people;
}
Normalmente, con un semplice weak_ptr
posso tornare my_people.lock();
Ma ho un vettore e non so come fare qualcosa di simile:
vector<boost::shared_ptr<People>>& getPeople() const
{
for(vector<boost::weak_ptr<People>::iterator it = my_people.begin();
it != my_people.end();
++it)
{
(*it).lock();
}
return my_people;
}
In altre parole, voglio restituire il mio vettore di weak_ptr
ma come vettore di shared_ptr
. È possibile? O devo restituire un vettore di weak_ptr
e utilizzare lock()
ovunque io li usi?
Avete davvero bisogno di 'weak_ptr' in primo luogo? –