我试图从boost :: intrusive集中分离元素并使断言失败。 当我从容器中分离后删除元素时。
该类派生自set_base_hook。
class fileXfer:public set_base_hook> 70 {
我正在使用“擦除”功能将对象从容器中分离出来。当我尝试删除对象时,我得到断言失败。断言失败发生在下面的位置。
/usr/local/include/boost/intrusive/detail/utilities.hpp:344:void boost :: intrusive :: detail :: destructor_impl(Hook&,boost :: intrusive :: detail :: link_dispatch<(boost :: intrusive :: link_mode_type)1u>)[with Hook = boost :: intrusive :: detail :: generic_hook,boost :: intrusive :: default_tag,(boost :: intrusive :: link_mode_type)1u,3>]:断言` !hook.is_linked()'失败了。 中止(核心倾销)
当我看到错误的位置时,我看到了这个命令。
341 {//如果这个断言提出,你可能已经破坏了一个对象 342 //虽然它仍然插入一个活着的容器中。 343 //如果是这样,请在销毁之前从容器中删除该对象。 344(无效)钩; BOOST_INTRUSIVE_SAFE_HOOK_DESTRUCTOR_ASSERT(hook.is_linked()!); 345}
请指教
答案 0 :(得分:5)
我在google搜索后解决了这个问题。应使用erase(Classname :: s_iterator_to(value))代替“erase(value)”。