【发布时间】:2012-10-15 12:36:22
【问题描述】:
我目前正在做一个大项目,我需要使用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()?
【问题讨论】:
-
你真的需要
weak_ptr吗?
标签: c++ boost vector shared-ptr weak-ptr