Problem mit qsort
-
Hi Leute,
ich hab ein Problem bei der Benutzung der qsort-Funktion
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );
Meine Vergleichsfunktion sieht so aus:
int SortModeList( const VOID* arg1, const VOID* arg2 );
Der Aufruf von qsort so:
qsort((void *)aMode, (size_t)dwNumModes, (size_t)sizeof(D3DDISPLAYMODE), SortModeList);
Jetzt motzt aber der compiler und sagt:
error C2664: 'qsort' : Konvertierung des Parameters 4 von 'int (const void *,const void *)' in 'int (__cdecl *)(const void *,const void *)' nicht moeglich
Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp uebereinWoran liegt das, was kann ich öndern? Danke schon mal im Voraus...
Mfg, smasher1985
-
probiers mal mit dem & operator:
qsort (..., &SortModeList);
-
OK, ich erkenne jetzt wo das Problem ist - und zwar ist meine Vergleichsfunktion nicht global definiert, sondern Member-Funktion einer Klasse. Deshalb kommt bei Verwendung des & Operators folgende Compiler-Meldung:
error C2276: '&' : Ungueltige Operation auf Ausdruck einer gebundenen Member-Funktion
Muss meine Vergleichs-Funktion global sein, oder gibt es eine Möglichkeit das auch so zu realisieren?
Mfg, Smasher1985
-
sie muss global sein. qsort wird nichts anderes akzeptieren.
hör dich mal nach dem sort der standardbibliothek und funktionsbindern um
-
mache die member funktion static
-
@Dimah: Danke, das war's