ฉันใช้ C ++ กับ ESP-32 เมื่อลงทะเบียนตัวจับเวลาฉันต้องทำสิ่งนี้:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
soundCallback
นี่โทรจับเวลา
และสิ่งเดียวกันเมื่อลงทะเบียนงาน:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
ดังนั้นวิธีการเริ่มต้นในงานที่แยกจากกัน
GCC เตือนฉันเสมอเกี่ยวกับการแปลงเหล่านี้ แต่ทำงานได้ตามแผนที่วางไว้
เป็นที่ยอมรับในรหัสการผลิตหรือไม่ มีวิธีที่ดีกว่าในการทำเช่นนี้?
std::bind
ถือว่าตัวชี้วัตถุเป็นอาร์กิวเมนต์วิธีแรกหรือไม่