List sort wird trotz operator nicht soertiert



  • Hallo zusammen,

    ich versuche eine liste zu sortieren doch die Liste wird nicht sortiert. Ich habe im operator eine Ausgabe der Werte gemacht und die Werte werden als 0 ausgegeben. Ich verstehe das nicht. Hier mal das Beispielcode:

    class Data{
        int age;
        string name;
    };
    
    typedef std::list<Data> Customers;
    
    bool operator<(Data &x, Data &y){
        cout << x.age << " " << y.age << endl; // wird immer 0 0 ausgegeben
        return x.age < y.age;
    }
    
    class CustomerMGNT{
    
        Customers customers;
    
    public:
    
        void add(Data customer){
            this->customers.push_back(customer);
        }
        void printsorted(){
            list<Data>::iterator it;
            this->customers.sort();
            for (it=this->customers.begin();it != this->customers.end(); ++it){
    	    cout << (*it).name << " ";
    	    cout << (*it).age << endl;
            }
        }
    };
    
    int main(){
        CustomerMGNT cu;
        Data a,b.c;
    
        a.age = 53;
        a.name = "Test01";
    
        b.age = 23;
        b.name = "Test02";
    
        c.age = 33;
        c.name = "Test03";
    
        cu.add(a);
        cu.add(b);
        cu.add(c);
        cu.printsorted();
        return 1;
    }
    

    output:
    0 0
    0 0
    0 0
    Test01 53
    Test02 23
    Test03 33

    Ich verstehe das nicht. Warum bekommt der operator 0 als age?? Kann mir jemand weirwe helfen???

    Danke + Gruss,
    Haksi



  • Dieser Code kompiliert nicht. Wenn man ihn soweit korrigiert, dass er kompiliert, ist dein beschriebener Fehler nicht reproduzierbar.

    Welchen Compiler benutzt du?


Anmelden zum Antworten