2012-05-31 34 views
3

我想從boost :: intrusive集合中分離元素並獲得斷言失敗。 當我從容器中分離元素後刪除元素。如何從boost :: intrusive集合容器中分離元素

該類派生自set_base_hook。

類fileXfer:公共set_base_hook> 70 {

我使用 「擦除」 功能分離從容器的對象。當我嘗試刪除對象時,我斷言失敗。斷言失敗發生在以下位置。

/usr/local/include/boost/intrusive/detail/utilities.hpp:344:無效的boost ::侵入::詳細:: destructor_impl(掛鉤&,提振::侵入::詳細:: 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()'失敗。 Aborted(核心轉儲)

當我看到錯誤的位置,我看到了這個命令。

341 {//如果這個斷言提出了,你可能已經銷燬了一個對象,它仍然被插入到一個活着的容器中。 343 //如果是這樣,請在銷燬之前從容器中取出物體。 344(void)hook; BOOST_INTRUSIVE_SAFE_HOOK_DESTRUCTOR_ASSERT(hook.is_linked()!); 345}

請告知

+0

我在google搜索之後解決了這個問題。應該使用擦除(Classname :: s_iterator_to(value))而不是「擦除(值)」。 –

回答

4

我得到了這麼多的谷歌搜索後解決。應該使用擦除(Classname :: s_iterator_to(value))而不是「擦除(值)」。