[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!


Anmelden zum Antworten