【发布时间】:2009-09-07 17:37:30
【问题描述】:
如果我有一个 STL 容器,请说出一个指针列表,我可以像下面的示例中那样删除它们。对于weak_ptrs 的容器,这是行不通的,因为它们无法进行比较,因为它们需要先被锁定。我能做什么?
void MyClass::RemoveItem(std::tr1::weak_ptr<Item> const & pItem)
{
mylist.remove(pItem);
}
【问题讨论】:
-
如果弱指针因为它指向的东西已经消失而不能被锁定会发生什么?
-
使用 sbk 的回答,p.lock() 会返回一个 shared_ptr 给 p,它不会匹配 theItem.lock(),所以它仍然可以工作。 p.lock() 从不抛出。