繁体   English   中英

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

[英]How do I delete from a boost::ptr_set when I know the pointer I inserted?

当我知道插入的指针时,如何从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类中:

bool operator<(const ServerConnection1 & sc1) const
{
return (this < &sc1); //Pointer comparison
}

尝试m_srv_conns1.erase(*this_ptr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM