如何将 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; });
}