C++ 延迟分配实现的并发任务

C++ 延迟分配实现的并发任务,c++,concurrency,C++,Concurrency,我有一个应用程序,其任务impl需要在switch语句中设置。这意味着任务在进入交换机之前得到默认构造,并且没有实现。在切换之后,我想设置task impl(参见t.get语句)。但是,由于没有实现,因此会引发异常。鸡和蛋的问题: #include <ppltasks.h> using namespace concurrency; class Resource { public: }; int _tmain(int argc, _TCHAR* argv[]) { // Cre

我有一个应用程序,其任务impl需要在switch语句中设置。这意味着任务在进入交换机之前得到默认构造,并且没有实现。在切换之后,我想设置task impl(参见t.get语句)。但是,由于没有实现,因此会引发异常。鸡和蛋的问题:

#include <ppltasks.h>

using namespace concurrency;
class Resource
{
public:
};

int _tmain(int argc, _TCHAR* argv[])
{
  // Create a task.
  Resource r;
  task< Resource > t;
  switch( 2 )
  {
  case 2:
    t.get() = r; // runtime error "throw invalid_operation("get() cannot be called on a default constructed task.")
    break;
  }
  t.wait();
  return 0;
}
#包括
使用名称空间并发;
类资源
{
公众:
};
int _tmain(int argc,_TCHAR*argv[]
{
//创建一个任务。
资源r;
任务t;
开关(2)
{
案例2:
t、 get()=r;//运行时错误“抛出无效的_操作(“无法对默认构造的任务调用get()”)
打破
}
t、 等待();
返回0;
}

我和SetImpl玩过,但没能让它工作。有什么问题吗?我想会有一个.set(t&t)设置IMPL .< /P>函数,这里是一个C++知识,为了在交换机语句中设置并发任务IMPL,缺少一个C++知识,以便在交换语句中设置并发任务IMPL:参见托马斯对StAdppOp溢出问题的回答。为什么不能在switch语句中声明变量?”通过添加大括号,concurrency::task可以移动到相关的case语句中。