這會發出大約100行錯誤。錯誤:使用run_me複製構造函數的已刪除函數等。 那麼,這裏有什麼問題?C++ 11線程編譯錯誤,刪除拷貝構造函數和std :: thread,爲什麼?
#include<thread>
#include<iostream>
#include<vector>
#include<fstream>
#include<string>
#include<chrono>
using namespace std;
//creating thread to print line from file
class run_me {
ifstream fs;
public:
string s;
run_me(): fs("lliftOff.cpp",ifstream::in) {}
void operator()(){
cout<<"hi";
while(getline(fs,s)) {
cout<<s<<endl;
this_thread::sleep_for (chrono::seconds(1));
}
}
~run_me() {
fs.close();
}
};
int main() {
thread t1{run_me()};
t1.join();
cout<<"shutting down now"<<endl;
}
文件流關閉他們自己。不需要析構函數。 – chris
istream不可複製。所以我猜測默認的拷貝構造函數試圖複製ifstream。 – anonymous