1

尝试在 shared_ptr 向量上做一个简单的事情并崩溃?我怀疑我做错了什么?

std::vector< shared_ptr<SUBCLASS> > m_vecSections;

shared_ptr<SUBCLASS> hoodSection;
BOOST_FOREACH(hoodSection, m_vecSections ){
   //do something
}

我正在崩溃

 void add_ref_copy()
{
    atomic_increment( &use_count_ );
}
4

3 回答 3

0

我认为你的语法应该是:

BOOST_FOREACH(shared_ptr<SUBCLASS> hoodSection , m_vecSections ){
   //do something
}
于 2012-11-13T08:44:30.577 回答
0

m_vecSections您是否从内部添加或删除元素BOOST_FOREACH

这可能会导致未定义的行为,因为BOOST_FOREACH缓存了结束迭代器(因此如果向量发生更改,它将变得无效)。见http://www.boost.org/doc/libs/1_52_0/doc/html/foreach/pitfalls.html

于 2012-11-13T10:00:44.880 回答
0

谢谢你们

你没有机会找到它,这样的电话......

weak_ptr 弱罩(shared_ptr(这个));

释放 m_vecSections 并导致崩溃......

于 2012-11-13T10:17:26.733 回答