如何从 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
会成功吗?
回答
- 更改
m_srv_conns1.erase(this_ptr);
至m_srv_conns1.erase(*this_ptr);
- 将以下代码放入
ServerConnection1
类(class):
bool operator<(const ServerConnection1 & sc1) const
{
return (this < &sc1); //Pointer comparison
}
最佳答案
试试 m_srv_conns1.erase(*this_ptr);
。
关于c++ - 当我知道我插入的指针时,如何从 boost::ptr_set 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655968/