Saya menggunakan C ++ pada ESP-32. Saat mendaftarkan timer saya harus melakukan ini:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Di sini timer memanggil soundCallback
.
Dan hal yang sama saat mendaftarkan tugas:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Jadi metode ini dimulai dalam tugas yang terpisah.
GCC selalu memperingatkan saya tentang konversi ini, tetapi itu berfungsi seperti yang direncanakan.
Apakah ini dapat diterima dalam kode produksi? Apakah ada cara yang lebih baik untuk melakukan ini?
std::bind
juga menganggap penunjuk objek sebagai argumen metode pertama?