boost::ptr_set
挿入したポインターがわかっている場合にa から削除するにはどうすればよいですか? (挿入されたクラス オブジェクトへの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
挿入されたオブジェクトへのポインタを持っていますが、どのように to を伝えますboost::ptr_set
かerase(this)
? 注: 挿入されたオブジェクト内にはもういませんが、そのオブジェクトへのポインターがあります。
アップデート
コメントの 1 つは、私が のすべての要件を満たしていないというものでした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
}