如何将 class 和 return 的 public 成员实例化为 std::promise?
How to instantiate public members of a class and return it as a std::promise?
我希望将 class 和 return 的 public 成员实例化为一个承诺。
这就是我想要做的:
class A
{
public:
int x;
};
std::future<A> returnPromiseA(int y)
{
std::promise<A> promise;
promise.x = y; //<- THIS IS INCORECT
return promise;
}
promise.x = y;
语法不正确。
赋值的正确语法是什么?
您无法通过 std::promise
访问模板类型的成员。要在 std::promise
中设置值,您需要使用 set_value
函数。
这意味着您的代码应该如下所示
std::future<A> returnPromiseA(int y)
{
std::promise<A> promise;
promise.set_value(A{y}); // construct an A with the desired value and set promises' value to that
return promise;
}
当前的 C++ 异步 类 无法链接延续,因此您必须以其他方式进行:
std::future<A> returnFutureA(int y) {
return std::async([y]{ A retVal; retVal.x = y; return retVal; });
}
我希望将 class 和 return 的 public 成员实例化为一个承诺。
这就是我想要做的:
class A
{
public:
int x;
};
std::future<A> returnPromiseA(int y)
{
std::promise<A> promise;
promise.x = y; //<- THIS IS INCORECT
return promise;
}
promise.x = y;
语法不正确。
赋值的正确语法是什么?
您无法通过 std::promise
访问模板类型的成员。要在 std::promise
中设置值,您需要使用 set_value
函数。
这意味着您的代码应该如下所示
std::future<A> returnPromiseA(int y)
{
std::promise<A> promise;
promise.set_value(A{y}); // construct an A with the desired value and set promises' value to that
return promise;
}
当前的 C++ 异步 类 无法链接延续,因此您必须以其他方式进行:
std::future<A> returnFutureA(int y) {
return std::async([y]{ A retVal; retVal.x = y; return retVal; });
}