[gelöst!] sort object vector vergleich-funktion funktioniert nicht
-
hi.
ich habe eine Klasse: container (vereinfacht):
class container { private: std::vector<schule *> schulen; bool comp_schule_auf(const schule& a, const schule& b) {return a.getName() > b.getName();}; public: void sortSchule(std::string key, std::string order); };und die Implementierung:
void container::sortSchule(std::string key, std::string order) { if(order == "auf") std::sort(menschen.begin(), menschen.end(), this->comp_schule_auf); }Ich bekommen aber folgende Fehlermeldungen, für die Zeile mit dem std::sort funktions aufruf:
error: argument of type 'bool (container::)(const schule&, const schule&)' does not match 'bool (container::*)(const schule&, const schule&)'bin über jede hilfe sehr dankbar
lg.
-
Das Prädikat von
std::sort()muss eine freie/statische Funktion oder ein Funktor sein, aber keine nicht-statische Memberfunktion.Entweder du machst deine Funktion statisch - es gibt schliesslich keinen Grund, dass sie zu einem Objekt gehört - oder du bindest sie an ein Funktionsobjekt, zum Beispiel mit
boost::mem_fn. Wobei ich zum ersten Vorgehen rate, das zweite kannst du vielleicht sonst einmal einsetzen.
-
hey super danke!