std::find 'erreur aucune fonction correspondante'
Dire que j'ai une classe A et une classe B qui ressemblent à ça:
Class A
{
private:
int a;
public :
bool operator==(const A &) const;
//other methods(...)
}
Class B
{
private:
std::vector<A> v;
public:
std::vector<A> &get_v() {return v;};
const std::vector<A>& get_v() const;
}
Maintenant quand je fais ça:
B b;
std::vector<A>::iterator it;
it=std::find (b.get_v().begin(), b.get_v().end(), an item of class A);
L'erreur que j'obtiens est
error: no matching function for call to 'find(std::vector<A>::iterator, std::vector<A>::iterator, A&)
Suis-je raté quelque chose ? Grâce
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié de
#include <algorithm>
.std::find()
peut être trouvé, mais c'est une surcharge avec une signature différente à partir d'un en-tête différent, qui n'est pas celui que l'OP a été à la recherche pour. C++ est parfaitement correct de se plaindre dans ce cas que les arguments passés de ne pas activer la résolution de toute décision de la surcharge. Si la cause était que ", std::find ne peut pas être trouvé", alors l'erreur serait de ", std::find n'a pas été déclarée dans ce champ d'application" ou autres choses de ce genre.Je crois que vous avez oublié inclure l'en-tête
<algorithm>
Vous avez oublié d'inclure ce fichier d'en-tête
.