Как удалить из boost::ptr_set, когда я знаю указатель, который я вставил?

Как удалить из 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
}

1 ответ

Решение

Пытаться m_srv_conns1.erase(*this_ptr);,

Другие вопросы по тегам