Que tal, buen día, tengo un gran problema y quisiera saber si alguién me pudiera ayudar...
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:
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 );
...
}
}
El error que me manda es el siguiente:
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
Agradezco de antemano la atención y la ayuda...
Saludos