Проблема заключается в создании экземпляра шаблона функции std::thread::thread<dummy &, void>
, где вы видите, что dummy
передается как ссылка, и он пытается скопировать dummy
объект, включая ofstream
(который не может быть скопировано). Вы можете обойти это, используя std::ref
, чтобы вместо этого скопировать ссылку на dum
в поток.
#include <iostream>
#include <fstream>
#include <thread>
class dummy {
std::ofstream file;
public:
dummy() {}
void operator()() { std::cout << "in thread\n"; }
};
int main() {
dummy dum;
std::thread t1(std::ref(dum));
t1.join(); // dont forget this
}