sagen, dass ich eine Klasse A und Klasse B haben, die so aussehen:std :: find 'Fehler keine passende Funktion'
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;
}
Nun, wenn ich das tun:
B b;
std::vector<A>::iterator it;
it=std::find (b.get_v().begin(), b.get_v().end(), an item of class A);
Die Fehler, den ich bekomme ist
error: no matching function for call to 'find(std::vector<A>::iterator, std::vector<A>::iterator, A&)
Fehle ich etwas? Dank
Ja, ich habe es herausgefunden! Dank – chiva
Nizza, kryptische C++ Fehlermeldungen. Anstatt zu sagen, dass std :: nicht finden kann (wegen der fehlenden enthalten) gefunden werden, heißt es Template-Argument Abzug/Substitution fehlgeschlagen. – Nuclear
@Nuclear Der Punkt ist, dass ** an ** 'std :: find()' gefunden werden kann, aber es ist eine Überladung mit einer anderen Signatur aus einer anderen Kopfzeile, die nicht die ist, nach der das OP gesucht hat. C++ ist in diesem Fall vollkommen korrekt, um zu beschweren, dass die übergebenen Argumente keine Auflösung für eine deklarierte Überlastung ermöglichen. Wenn die Ursache darin liegt, dass _ "std :: find nicht gefunden werden kann" _, dann wäre der Fehler _ "std :: find wurde in diesem Bereich nicht deklariert" _ oder ähnliches. –