Obecnie pracuję nad dużym projektem i potrzebuję użyć weak_ptr
zamiast shared_ptr
.Posiadanie wektora weak_ptr, chcesz zwrócić wektor shared_ptr
Oto mój problem.
Mam klasę o nazwie Dom z atrybutem: vector<boost::shared_ptr<People>> my_people
. Chcę zmodyfikować ten element danych na vector<boost::weak_ptr<People>> my_people
.
Moja rodzicielka była
vector<boost::shared_ptr<People>>& getPeople() const
{
return my_people;
}
Normalnie, z prostym weak_ptr
mogę wrócić my_people.lock();
Ale mam wektor i nie wiem, jak zrobić coś takiego:
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;
}
Innymi słowy, chcę zwrócić mój wektor weak_ptr
, ale jako wektor shared_ptr
. Czy to możliwe? Czy muszę zwrócić wektor weak_ptr
i używać lock()
wszędzie, gdzie ich używam?
Czy naprawdę potrzebujemy 'weak_ptr' w pierwszej kolejności? –