用C ++进行线程处理:无法从' const std :: ofstream'转换参数1到' std :: ofstream&'

时间:2017-11-28 00:07:04

标签: c++ multithreading lambda

我有一个写入线程文件的类

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,但我无法弄清楚如何修复第一个参数。

谢谢!

1 个答案:

答案 0 :(得分:4)

问题是你的lambda捕获是按值的,而outFile是不可能的。尝试通过引用捕获:

   return thread ([&]{ writeToFile(outFile, a);});