Tôi sử dụng C ++ trên ESP-32. Khi đăng ký hẹn giờ tôi phải làm điều này:
timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback);
timer_args.arg = this;
Ở đây hẹn giờ gọi soundCallback
.
Và điều tương tự khi đăng ký một nhiệm vụ:
xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle);
Vì vậy, phương thức được bắt đầu trong một nhiệm vụ riêng biệt.
GCC luôn cảnh báo tôi về những chuyển đổi này, nhưng nó hoạt động đúng như kế hoạch.
Có được chấp nhận trong mã sản xuất? Có cách nào tốt hơn để làm điều này?
std::bind
cũng giả sử con trỏ đối tượng là đối số phương thức đầu tiên?