Callback de C en C++

sandra
06 de Junio del 2004
Hola, estoy intentando utilizar una funcion definida en un modulo en C que necesita como parametro un puntero a una funcion definida en una clase en C++. Al compilar aparece un error de conversión de tipos. Alguna idea?

gracias por adelantado.

Alejandro_
06 de Junio del 2004
Para llamar una función miembro de un módulo C++ desde un módulo C, se necesita una función intermediaria (wrapper)

Por ejemplo:

// en el código C++:

class UnaClase {
// ...
int f(int); // función miembro
};



extern "C" int Llama_a_f(UnaClase* p, int i) // función wrapper.
{
return p->f(i); // devuelve lo que devuelve f()
}
// notarás que es necesario declararla como extern "C".


Después, para llamara a esta función desde el módulo C:

/* código C: */

int Llama_a_f(struct C* p, int i); /* declaración de la func. wrapper*/

void unaFuncion(struct C* p, int i)
{
int d = Llama_a_f(p,i); /* llamada a la func. wrapper */
/* ... */
}



Suerte,

Alejandro