我想在我的类/结构中创建一个线程对象,但不希望在声明过程中立即初始化。 Intead希望以后再做。因此,我做了下面的代码片段,我收到了这个编译错误。我该如何解决 ?错误C2280创建std ::线程时未在C++中初始化
错误C2280: '的std ::螺纹::螺纹(常量的std ::螺纹&)':试图 引用一个已删除的功能
我观察到导致该错误的行是:
std::thread t2;
这是否意味着我们不能只申报一个std ::线程没有初始化?这违背了答案,在这个线程Is it possible to define an std::thread and initialize it later?
struct Abc
{
int a;
std::thread t2;
void mem1()
{
printf("mem1\n");
}
void mem2()
{
printf("mem2\n");
std::thread t1(&Abc::mem1, Abc());
t2.swap(t1);
printf("after spawning t1\n");
t2.join();
}
};
错误详细信息:
C:\ Program Files文件(x86)的\微软的Visual Studio 12.0 \ VC \包括\ xmemory0(611) :error C2280:'std :: thread :: thread(const std :: thread &)':尝试引用已删除的函数1>
C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ include \ thread(70):参见'std ::螺纹::线程“1>此诊断发生在编译器生成 功能” ABC ::美国广播公司(美国广播公司常量&)
此代码是可以的。它在这里工作:https://ideone.com/xRjkcv。我认为问题在别的地方。请发布您的程序的其余部分或尝试清理/重建整个事情... –