Yo uso C ++ en ESP-32. Al registrar un temporizador, tengo que hacer esto:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Aquí el cronómetro llama soundCallback
.
Y lo mismo al registrar una tarea:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Entonces el método se inicia en una tarea separada.
GCC siempre me advierte sobre estas conversiones, pero funciona según lo planeado.
¿Es aceptable en el código de producción? ¿Hay una mejor manera de hacer esto?
std::bind
supone también el puntero de objeto como primer argumento de método?