std :: async在成员字段的成员功能上
std::async on member function of member field
class Foo
{
private:
std::unique_ptr<Bar>& bar;
int retVal;
std::future<int> myFuture = std::async(std::launch::async, &Foo::bar->myMethod, this);
Foo(std::unique_ptr<Bar>& bar_) : bar(bar_) {}
}
我相信这总结了主题,因为这行不通。如何在Bar::myMethod
上启动myFuture
?
您需要命名 Bar::myMethod
,然后通过(cv适当) Bar *
或 Bar &
。看起来像
std::async(std::launch::async, &Bar::myMethod, bar.get());
好吧,请修复一些混乱(即添加所有丢失的所有内容),我们可以使用lambda函数到达简单的解决方案:
#include <future>
#include <iostream>
class Bar {
public:
int myMethod(void) {
std::cerr << "Hi!n";
return 1;
}
};
class Foo {
private:
std::unique_ptr<Bar>& bar;
int retVal;
std::future<int> myFuture = std::async(std::launch::async, [this](void)->int{return bar->myMethod();});
public:
Foo(std::unique_ptr<Bar>& bar_) : bar(bar_) {}
};
int main(void) {
std::unique_ptr<Bar> bar = std::make_unique<Bar>();
Foo foo(bar);
return 0;
}
当然,这可能不是唯一的解决方案,也不是最好的解决方案。
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 在成员dynamic_bitset上使用 boost::from_block_range 时出错,但在本地dynamic
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- CPPCHECK C++成员函数上的格式字符串
- 作为模板参数的成员函数指针在继承的成员函数上失败,如何以及为什么?
- 如何在多个成员阵列上构建合并视图
- 如何避免大多数成员功能相同的代码重复
- [[maybe_unused]] 在成员变量上,GCC 警告(不正确?)该属性被忽略
- 应该在成员对象上调用析构函数
- 如何在同一个模板功能上专门化几种类型?
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- Winapi:在类成员功能上创建新线程 - 不兼容的参数类型
- std :: async在成员字段的成员功能上
- 模板功能上的C 模板类成员
- 在多个类成员功能上共享模板参数
- 为什么Boost建议在成员功能上使用核心功能