Ich benutze C ++ auf ESP-32. Bei der Registrierung eines Timers muss ich Folgendes tun:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Hier ruft der Timer soundCallback
.
Und das Gleiche beim Registrieren einer Aufgabe:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Die Methode wird also in einer separaten Task gestartet.
GCC warnt mich immer vor diesen Konvertierungen, aber es funktioniert wie geplant.
Ist es im Produktionscode akzeptabel? Gibt es einen besseren Weg, dies zu tun?
std::bind
auch einen Objektzeiger als erstes Methodenargument an?