クラス「holdable」へのポインタを含むboost::ptr_vectorがあります。
boost::ptr_vector<holdable> items;
次のように、保持可能なクラス内からこのベクトルに新しいアイテムを追加します。
currentplanet->items.push_back(this);
ここで、currentplanetは、ptr_vectorを含むクラスのオブジェクトへのポインタです。これはすべて問題ありません。
私が混乱しているのは、ptr_vectorのエントリを独自のクラス内の関数から削除する方法です。私はしようとしています:
currentplanet->items.erase(std::find(currentplanet->items.begin(),
currentplanet->items.end(),
this));
ここでの同様の質問への回答によると:boost :: ptr_vectorから要素を消去する方法ですが、おそらく「this」の使用に関して、どこかで明らかに間違っています。
コンパイルしようとすると、stl_algo.hから次のようなエラーが表示されます
stl_algo.h|174|error: no match for 'operator==' in '__first.boost::void_ptr_iterator<VoidIter, T>::operator*
[with VoidIter = __gnu_cxx::__normal_iterator<void**, std::vector<void*, std::allocator<void*> > >,
T = holdable]() == __val'|
それは明らかなことだと思いますが、おそらくptr_vectorの間接参照に混乱しているでしょう...事前に回答をありがとう!