Как удалить из 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
сделал бы трюк?
Ответ
- + Изменить
m_srv_conns1.erase(this_ptr);
вm_srv_conns1.erase(*this_ptr);
- Поместите следующий код внутри
ServerConnection1
учебный класс:
bool operator<(const ServerConnection1 & sc1) const
{
return (this < &sc1); //Pointer comparison
}