Estoy trabajando en la configuración de una función miembro como devolución de llamada para una biblioteca C que estoy usando. El C-biblioteca establece devoluciones de llamada de esta manera:Función de miembro de clase como devolución de llamada utilizando boost :: bind and boost :: function
typedef int (*functionPointer_t)(myType1_t*, myType2_t*, myType3_t*);
setCallback(param1, param2, functionPointer, param4)
me gustaría usar boost :: bind (si es posible) para pasar en el puntero de función. Preferiría que la función apuntada fuera un miembro de la clase instanciada, no un miembro estático. P.ej.
Class A {
public:
A();
protected:
int myCallback(myType1_t*, myType2_t*, myType3_t*); //aka functionPointer_t
}
¿Se puede hacer esto utilizando boost :: bind and boost :: function? Por How can I pass a class member function as a callback? (la tercera respuesta) parece que podría incluir la siguiente información (en algún lugar, o como un typedef):
boost::function<int (A*, myType1_t*, myType2_t*, myType3*> myCallbackFunction
Y a continuación, en algún lugar de A (Héctor) llamada boost :: bind de ese tipo, y pasarlo a la convocatoria de la biblioteca C.
¿Esto es posible o estoy fuera de la base? Muchas gracias.
No puedo cambiar la interfaz de setCallback – jdt141
Lo siento, me perdí esa parte de su publicación. Editado para corregir. –
@ jdt141: ¿Puede abusar de uno de 'param1 , param2, param4' en 'setCallback' para introducir un token que te será devuelto a través de' int (* functionPointer_t) (myType1_t *, myType2_t *, myType3_t *) '? –