Estoy tratando de pasar una función a otra función como parámetro, y ambos resultan ser funciones miembro de la misma clase.C++: Uso de punteros de función con funciones de miembro
Me aparece un error extraño y no puedo entender cuál es el problema.
Aquí están mis funciones:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1(&myClass::functionToPass);
}
Sin embargo, estoy recibiendo el siguiente error:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
Entonces, ¿qué pasa? Siento que he probado todas las variaciones para intentar que esto funcione. ¿Puede incluso pasar punteros a las funciones de los miembros? ¿Cómo puedo hacer que esto funcione?
Nota: Hacer functionToPass static no es realmente una opción válida.
El mensaje de error le brinda toda la información necesaria para solucionar el problema. –
Usar 'boost :: function' puede ser más fácil que usar punteros a funciones. Tendría que comprobar si eso debería ser 'boost :: function' (en cuyo caso 'function2' debería enlazar' this') o 'boost :: function ' (en cuyo caso 'function1' debería pasar '* this') –
MSalters