尝试引用已删除的功能

时间:2018-06-17 18:59:06

标签: c++ multithreading file fstream

运行线程时出现此错误。我用了一个参考 将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;
}

1 个答案:

答案 0 :(得分:1)

阅读有关thread constructor的参考资料。在下面的行

thread oddPrint(readFile, stream);

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

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