1

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_seterase(this)? 注: 挿入されたオブジェクト内にはもういませんが、そのオブジェクトへのポインターがあります。

アップデート

コメントの 1 つは、私が のすべての要件を満たしていないというものでした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
}

4

1 に答える 1

0

試してみてくださいm_srv_conns1.erase(*this_ptr);

于 2011-12-28T12:36:59.460 に答える