El problema es que tengo un programa en C++, donde estoy usando clases, y tengo que usar la función "qsort" cuya función pertenece a la clase, sin embargo, me manda error.
Aquí muestro como tengo implementada la función que compara, y la función que manda a llamar a "qsort", las dos dentro de la clase Modulo.
Código:
El error que me manda es el siguiente:int cmpPesos( const void* p1, const void* p2 ); void ordena(); class Modulo{ public: ... int cmpValores( const void* v1, const void* v2 ){ int vAux1 = v1; int vAux2 = v2; if( vAux1 > vAux2 ) return -1; if( vAux1 < vAux2 ) return 1; return 0; } void ordena(){ ... qsort( valores, total, sizeof( valores ), &cmpValores ); ... } }
Código HTML:
... main.cpp:936: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say ‘&Modulo::cmpValores’ main.cpp:936: error: cannot convert ‘int (Modulo::*)(const void*, const void*)’ to ‘int (*)(const void*, const void*)’ for argument ‘4’ to ‘void qsort(void*, size_t, size_t, int (*)(const void*, const void*))’ make[2]: *** [CMakeFiles/main.dir/main.cpp.o] Error 1 make[1]: *** [CMakeFiles/main.dir/all] Error 2 make: *** [all] Error 2
Saludos