尝试引用已删除的函数

Attempt to reference a deleted function

本文关键字:函数 删除 引用      更新时间:2023-10-16

运行线程时,我收到此错误。我使用了对 fstream 作为 readFile 函数的参数以避免复制 构造函数也调用。我仍然得到同样的错误,如何?

void readFile(fstream& fileStream)
{    
// some code
}
int _tmain(int argc, _TCHAR* argv[])
{
fstream stream;  
readFile(stream);   
thread oddPrint(readFile, stream);
oddPrint.join();     
getchar();
return 0;
}

阅读有关线程构造函数的参考资料。在下面的行中

thread oddPrint(readFile, stream);

调用构造函数时stream对象thread按值传递,但类没有复制操作fstream因此出现错误。如果要将不可复制的对象作为参数传递,则必须使用std::refstd::cref包装器:

thread oddPrint(readFile, std::ref(stream));