¿Cuál es la sintaxis correcta para la lista de punteros a funciones con miembros de clase?
Tengo una lista de punteros a funciones, la no perteneciente a una clase se compila sin errores, pero la perteneciente a una clase se compila con errores:
error: no se puede convertir ‘void (CVdmConfig::)()’ en ‘fp {aka void ()()}’ en la inicialización
CVdmConfig::writeConfig es una función void.
typedef void (*fp)();
fp fpList[] = {&valvesCalib, &CVdmConfig::writeConfig};
¿Qué estoy haciendo mal?
Saludos cordiales,
Werner
davy.ai
El mensaje de error sugiere que hay un problema con la conversión de tipo de un puntero a una función miembro a un puntero a una función regular. Esto se debe a que un puntero a una función miembro no es lo mismo que un puntero a una función regular.
Para solucionar este problema, debes utilizar los operadores de puntero a miembro, como
.*
y->*
. Estos operadores te permiten llamar a una función miembro a través de un puntero.En este caso, dado que
CVdmConfig::writeConfig
es una función miembro, debes modificar la definición defp
para que sea un puntero al tipo de función miembro de la claseCVdmConfig
. Por ejemplo:Luego, para llamar a la función miembro a través del puntero, necesitarás tener una instancia de
CVdmConfig
para utilizar. Por ejemplo:Esto llamaría a la función miembro
writeConfig
deconfig
.