我有一个写入线程文件的类
class A{
public:
void writeToFile(ofstream& outFile, obj &a)
{
//...
}
thread memberThread1(ofstream& outFile, obj &a)
{
cout << "Thread 1 is now running " << endl;
return thread ([=]{ writeToFile(outFile, a);});
}
};
我在lambda函数上遇到了一些错误。
无法从&#39; const std :: ofstream&#39;转换参数1 to&#39; std :: ofstream &安培;&#39;
注意:转换失去限定符
我能够通过执行a
修复第二个参数const_cast
,但我无法弄清楚如何修复第一个参数。
谢谢!
答案 0 :(得分:4)
问题是你的lambda捕获是按值的,而outFile是不可能的。尝试通过引用捕获:
return thread ([&]{ writeToFile(outFile, a);});