运行线程时出现此错误。我用了一个参考 将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;
}
答案 0 :(得分:1)
阅读有关thread constructor的参考资料。在下面的行
thread oddPrint(readFile, stream);
虽然调用thread
构造函数stream
对象是按值传递的,但fstream
类没有复制操作,因此您得到了错误。如果要将不可复制的对象作为参数传递,则必须使用std::ref
或std::cref
包装器:
thread oddPrint(readFile, std::ref(stream));