wo kommt der pointer bei sort her?
-
hallo zusammen,
ich habe eine sort funktion, welche die nachrichten in einer queue nach der delivery zeit sortieren soll:
void Queue::sortByTime() { std::sort(queue.begin(), queue.end(), ComparatorLessAs ); }Die queue kapselt einen vector (hier queue), und der ComparatorLessAs ist definiert als:
bool Queue::ComparatorLessAs(PeerMessage * a, PeerMessage * b) { if(a == NULL) throw NullPointerException("ComparatorLessAs - the first argument given is NULL"); if(b == NULL) throw NullPointerException("ComparatorLessAs - the second argument given is NULL"); return (a->getLogicalDeliveryTime() < b->getLogicalDeliveryTime()); }Der Compiler meldet aber:
Queue.cc:78: error: argument of type ‘bool (Queue::)(PeerMessage*, PeerMessage*)’ does not match ‘bool (Queue::*)(PeerMessage*, PeerMessage*)’Woher kommt Queue* ????? Jemand einen Tipp? Danke!
-
Mach die Vergleichsfunktion zu einer statischen Memberfunktion oder zu einer globalen Funktion. Du kannst keine nicht-statischen Memberfunktionen als Sortierprädikat übergeben, da du dafür einen
this-Zeiger bräuchtest.Nullzeiger auf diese Weise zu prüfen ist fragwürdige Praxis, das verbirgt nur Logikfehler. Entweder
assertoder einen vernünftigen Debugger, der bei der Dereferenzierung von Nullzeigern automatisch das Programm anhält...Übrigens: "Kleiner als" heisst "less than" und nicht "less as"

-
hallo nexus,
das ist ja doppelt peinlich, vor allem, da ich es in der doku richtig geschrieben haben.

vielen dank für deine hilfe, nun tuts!!!