Tôi hiện đang làm việc trên một dự án lớn và tôi cần sử dụng weak_ptr
thay vì shared_ptr
.Có vectơ weak_ptr, muốn trả về véc tơ của shared_ptr
Đây là vấn đề của tôi.
Tôi có một lớp có tên Nhà với thuộc tính: vector<boost::shared_ptr<People>> my_people
. Tôi muốn sửa đổi thành viên dữ liệu này thành vector<boost::weak_ptr<People>> my_people
.
getter của tôi là
vector<boost::shared_ptr<People>>& getPeople() const
{
return my_people;
}
Thông thường, với một đơn giản weak_ptr
tôi có thể trở lại my_people.lock();
Nhưng tôi có một vector và tôi không biết làm thế nào để làm một cái gì đó như thế này:
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;
}
Nói cách khác, tôi muốn trả lại véc tơ của mình là weak_ptr
nhưng dưới dạng vectơ shared_ptr
. Có thể không? Hoặc tôi có phải trả lại véc tơ weak_ptr
và sử dụng lock()
ở mọi nơi tôi sử dụng chúng không?
Bạn có thực sự cần 'weak_ptr' ở nơi đầu tiên? –