我目前正在做一个大项目,我需要使用weak_ptr
而不是shared_ptr
.
这是我的问题。
我有一个名为 House 的类,其属性为:vector<boost::shared_ptr<People>> my_people
。我想将此数据成员修改为vector<boost::weak_ptr<People>> my_people
.
我的吸气剂是
vector<boost::shared_ptr<People>>& getPeople() const
{
return my_people;
}
通常,只需简单的weak_ptr
我就可以返回my_people.lock();
但我有一个向量,我不知道如何做这样的事情:
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;
}
换句话说,我想返回我的向量weak_ptr
但是作为向量shared_ptr
。可能吗?还是我必须返回一个向量weak_ptr
并lock()
在我使用它们的任何地方使用它们?