当我知道插入的指针时,如何从boost :: ptr_set中删除?

时间:2011-12-28 12:33:02

标签: c++ boost set boost-ptr-container

当我知道插入的指针时,如何从boost::ptr_set删除? (我有一个指向插入的类对象的 this 指针。)

这是一个人为的例子来展示我想要做的事情:

boost::ptr_set<ServerConnection1> m_srv_conns1;

ServerConnection1 *this_ptr;
m_srv_conns1.insert(this_ptr = new ServerConnection1);
m_srv_conns1.erase(this_ptr); //It won't work!

指向插入对象的this指针,如何告诉boost::ptr_set erase(this)?注意:我不再在插入的对象中,但我有一个指向它的指针。

更新

其中一条评论是我没有满足boost::ptr_set的所有要求。有什么要求?

我认为提供< operator可以解决问题吗?

答案

  1. m_srv_conns1.erase(this_ptr);更改为m_srv_conns1.erase(*this_ptr);
  2. 将以下代码放在ServerConnection1类中:
  3. bool operator<(const ServerConnection1 & sc1) const
    {
    return (this < &sc1); //Pointer comparison
    }

1 个答案:

答案 0 :(得分:0)

尝试m_srv_conns1.erase(*this_ptr);