Uso C ++ su ESP-32. Quando si registra un timer devo fare questo:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Qui il timer chiama soundCallback
.
E la stessa cosa quando si registra un'attività:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Quindi il metodo viene avviato in un'attività separata.
GCC mi avvisa sempre di queste conversioni, ma funziona esattamente come previsto.
È accettabile nel codice di produzione? C'è un modo migliore per farlo?
std::bind
assume anche il puntatore all'oggetto come primo argomento del metodo?