Ich habe einen Vektor shared_ptr, ich möchte Boost shared_ptr kombinieren und zusammen binden.Verwendung find_if und boost :: bind mit einer Reihe von shared_pointers
Meine Frage ist sehr ähnlich this, mit der Ausnahme, dass anstelle von „& MyClass :: ReferenceFn“ Ich mag würde „& Element :: Fn“ nennen.
ist hier ein ähnliches Stück Code:
typedef boost::shared_ptr<Vertex> vertex_ptr;
std::set<vertex_ptr> vertices;
void B::convert()
{
...
if(std::find_if(boost::make_indirect_iterator(vertices.begin()),
boost::make_indirect_iterator(vertices.end()), boost::bind(&Vertex::id, boost::ref(*this), _1) == (*it)->id()) == vertices.end())
}
hier ist der Fehler:
no matching function for call to ‘bind(<unresolved overloaded function type>, const boost::reference_wrapper<B>, boost::arg<1>&)’
HINWEIS: Ich bin begrenzt die C++ 03 verwenden.
Welchen Fehler bekommen Sie? –
@PiotrSkotnicki, der Fehler ist, dass es (dieses Schlüsselwort) als dieser Zeiger der Klasse B –
dann Perpahs Sie wollen, boost :: bind (& Vertex :: id, _1) == (* it) -> id()) ', oder,' boost :: bind (statischer_cast (& Vertex :: id), _1) == (* it) -> id()) '(wobei' int' ist der Rückgabetyp von "id") –