0

我希望实例化一个类的公共成员并将其作为承诺返回。
这就是我想要做的:

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;是不正确的语法。
赋值的正确语法是什么?

4

2 回答 2

2

您不能通过std::promise. 要在 a 中设置值,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;
}
于 2018-08-20T18:13:39.090 回答
1

当前的 C++ 异步类无法链接延续,因此您必须以其他方式进行:

std::future<A> returnFutureA(int y) {
    return std::async([y]{ A retVal; retVal.x = y; return retVal; });
}
于 2018-08-20T18:19:33.130 回答