尝试引用已删除的函数
Attempt to reference a deleted function
运行线程时,我收到此错误。我使用了对 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::ref
或std::cref
包装器:
thread oddPrint(readFile, std::ref(stream));
相关文章:
- 如何通过 getter 函数删除矢量的元素?
- C++类析构函数删除成员(如果"owner"?
- 使用私有析构函数删除动态分配的对象
- C ++(为什么)确实移动构造函数删除运算符=
- 析构函数删除错误的元素
- C++ 类析构函数删除部分但不是全部成员数据
- 如何使用 deleteEntry 函数 c++ 删除数组中的单个字符串
- 仅仅以避免隐式复制构造函数删除,使用shared_ptr而不是unique_ptr作为类成员明智
- 析构函数删除在 main 中声明的动态数组
- 如果未分配申报表,是否需要删除或处理动态数组?还是它被函数删除
- C++ 函数删除一行
- g++空函数删除是否递归工作
- C++析构函数删除东西(对象,指针?)太快
- C++析构函数删除包含动态数组作为数据成员的对象时的用法
- C++11 析构函数 = 删除
- 父类析构函数删除具有外部启动元素的子类
- 函数删除太多
- C++析构函数删除共享内存
- C++,如何让此函数删除存储在数组中的字符串
- 析构函数删除数组时出错