Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

a ver si alguien me puede ayudar con este CAST

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: a ver si alguien me puede ayudar con este CAST Responder citando

Os cuento mi problema:
Tengo un thread, en el que el método execute llama a una funcion que me fija una funcion como manejadora de eventos, algo así:
execute()
{
CreateHandler(funcion_manejadora);
}
donde la funcion manejadora es algo así:

unsigned long funcion_manejadora(int*, void*)


Esto compila bien si funcion_manejadora esta fuera de la clase hilo. El problema es que si la meto en la clase, me sale el error:

cannot convert :
'unsigned long(*(__closure)(int *,void*))(int *, void *)'
to
'unsigned long(*)(int *, void *)'

en el hilo.h esta definida como:
public:
unsigned long funcion_manejadora(int*,void*);


He probado varias combinaciones sin éxito. Y lo que me mosquea es que si la función esta fuera de la clase todo va bien. ¿se le ocurre algo a alguien para que compile?


Muchas gracias.

Volver arriba
Mensaje    Asunto: a ver si alguien me puede ayudar con este CAST Responder citando

HAy un metodo que te devuelve la direccion de la funcion:

puntero_a_funcion=this->MethodAddress("funcion_manejadora");


de todas formas voy a ver si funciona tu solucion...

Volver arriba
Mensaje    Asunto: a ver si alguien me puede ayudar con este CAST Responder citando

Prueba a declarar la función en la definición de la clase como:

unsigned long (__closure *funcion_manejadora)(int*,void*);

El problema, es que en C++ no existe forma de declarar un puntero que apunte a un método de una clase, por lo que tienes que utilizar la extensión __closure.

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.