[ERLEDIGT] std::list sort()-Funktion funktiert mit greater aber nicht mit less !?! [/ERLEDIGT]



  • Mein Problem ist folgendes:

    Ich habe eine Liste

    m_listcmpRating
    

    mit Elementen vom Typ struct

    CCompare
    

    Diese soll sortiert werden.

    Wenn ich absteigend sortiere:
    [cpp]m_listcmpRating.sort(greater<CCompare>());[/cpp]
    wird mein Proramm einwandfrei kompiliert.

    Wenn ich jedoch aufsteigend sortiere:

    m_listcmpRating.sort(less<CCompare>());
    

    gibt er mir folgende Fehlermeldung aus:

    error C2664: 'void __thiscall std::list<struct CCompare,class std::allocator<struct CCompare> >::sort(struct std::greater<struct CCompare>)' :
    Konvertierung des Parameters 1 von 'struct std::less<struct CCompare>' in 'struct std::greater<struct CCompare>' nicht moeglich
    Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
    

    Hier noch die Definition meines structs:

    struct CCompare
    {
      CString m_strRefFile;
      CString m_strCmpFile;
      int m_iCmpNumber;
      int m_iRating;
    
      bool operator<(const CCompare &cmp) const
      {
        return m_iCmpNumber < cmp.m_iCmpNumber;
      }
    
      bool operator>(const CCompare &cmp) const
      {
        return m_iCmpNumber > cmp.m_iCmpNumber;
      }
    };
    

    Habe jetzt übergangsweise

    m_listcmpRating.reverse()
    

    benutzt um richtige Sortierung zu bekommen, aber das ist ja nicht Sinn der Sache.

    Weiß jemand einen Rat?

    Gruß, Philipp



  • Bevier schrieb:

    Weiß jemand einen Rat?

    Ja. Forensuche benutzen. Diese VC6.0-only-Problem haben wir hier schon mindestens 837 Mal erörtert.



  • Sorry. Ich hatte vorher schon mal die Suche angeschmissen, allersdings mit anderen Schlüsselwörtern. Jetzt habe ich die Antwort hier gefunden: http://www.c-plusplus.net/forum/viewtopic.php?t=80864

    Danke noch mal!



  • Hier findest du noch ein weiteres Beispiel:
    http://www.c-plusplus.net/forum/viewtopic.php?t=98417&highlight=sort


Anmelden zum Antworten