c++ - 如何通过 lamda 移动承诺?
问题描述
我想将一个承诺移到一个回调函数(onConcatenated)
中。
以下是当前正常工作的示例。
void onConcatenated(void)
{
std::cout << "Callback triggered " << std::endl;
}
int main(int argc, char *argv[])
{
// Let's subscribe for the 'concatenated' signals
concatenatorProxy->uponSignal("concatenated").onInterface(interfaceName).call([](){ onConcatenated(void); });
concatenatorProxy->finishRegistration();
.
.
}
到目前为止我所做的是
void onConcatenated(std::promise<int> p)
{
std::cout << "Callback triggered " << std::endl;
p.set_value(1);
}
std::promise<int> promise;
std::future<int> future = promise.get_future();
concatenatorProxy->uponSignal("concatenated").onInterface(interfaceName).call([](){ onConcatenated(std::move(promise)); });
但是我遇到了error: ‘promise’ is not captured
编译错误。
我最终想要的是阻止调用函数,直到回调触发并执行类似 promise.set_value
允许调用函数继续的操作。
解决方案
推荐阅读
- python - 如何更改 .pptx 文件的特定单词的字体颜色?
- android - 从第一个位置删除子视图并将其添加到最后一个位置
- angular - 未捕获的类型错误:无法在我的开发人员工具上读取未定义的属性“拆分”
- django - DRF:“不允许获取”,在使用 ListModel mixin 设置的通用视图上
- c++ - else 在新程序中没有先前的 if 错误
- python - 6是python格式浮点的默认十进制数字吗?
- r - 如何从具有正确轮廓的 shapefile 中获取子集?
- flutter - 从列表中删除一些但不是所有重复项 (Flutter)
- php - 如何覆盖 saveAction 背包 laravel 管理面板
- ios - 在使用 moveRowAt 方法时修复 Top Row