这个错误通常与std::bind
的使用不当有关。std::bind
用于将可调用对象(如函数)的某些参数绑定到特定的值,创建一个新的可调用对象。
typedef std::function<void(CAPTURE_RESULT_S )> EndTakePhotoCb;
EndTakePhotoCb FpvAerialMappingCtrlModule_Impl::BindEndTakePhotoCb()
{
return ( std::bind(&FpvAerialMappingCtrlModule_Impl::CameraDeviceResultCb, this, std::placeholders::_1) );
}
void FpvAerialMappingCtrlModule_Impl::CameraDeviceResultCb(CAPTURE_RESULT_S *result) {
XAG_LOG_I("add storage info to sync queue %s", result->szFileName);
objCaptureSync.AddPhotoStorageInfo(result);
}
这里的错误是没有使用正确的对象指针或引用作为第一个参数。
修改为:
typedef std::function<void(CAPTURE_RESULT_S *)> EndTakePhotoCb;
EndTakePhotoCb FpvAerialMappingCtrlModule_Impl::BindEndTakePhotoCb()
{
return ( std::bind(&FpvAerialMappingCtrlModule_Impl::CameraDeviceResultCb, this, std::placeholders::_1) );
}
void FpvAerialMappingCtrlModule_Impl::CameraDeviceResultCb(CAPTURE_RESULT_S *result) {
XAG_LOG_I("add storage info to sync queue %s", result->szFileName);
objCaptureSync.AddPhotoStorageInfo(result);
}