Ich habe Probleme mit der Verwendung der Funktion std :: sort mit meiner benutzerdefinierten Vergleichsfunktion, wenn in einer Klasse definiert.Std :: Sortierfunktion mit benutzerdefinierten Vergleich Funktion Ergebnisse Fehler: Verweis auf nicht statische Elementfunktion muss aufgerufen werden
class Test {
private:
vector< vector<int> > mat;
bool compare(vector<int>, vector<int>);
public:
void sortMatrix();
}
bool Field::compare(vector<int> a, vector<int> b) {
return (a.back() < b.back());
}
void Test::sortMatrix() {
sort(vec.begin(), vec.end(), compare);
}
bekomme ich folgende Fehlermeldung:
error: reference to non-static member function must be called
sort(vec.begin(), vec.end(), compare);
^~~~~~~
Wenn ich vergleiche jedoch define() und sortMatrix() in der Datei main.cpp ohne Klasse, funktioniert alles einwandfrei. Ich würde jede Hilfe und Vorschläge schätzen.
Sie können dort keine Memberfunktion verwenden, ändern Sie sie in 'Test' Klasse Aufrufoperator und übergeben Sie' Test' statt '' sort() 'stattdessen:' sort (vec.begin(), vec.end(), Test); ' –