У меня проблема с потоками в C ++. Я хочу создать потоки, состоящие из метода члена класса с определенным назначенным объектом. Более того, объект другого пользовательского класса передается этому методу. Пожалуйста, найдите код ниже:
Grid an_chan(NX, NY, xmax, ymax);
an_chan.calc_paraFlow(anode);
Grid *ptr_grid = &an_chan;
Variable T(Tin, Tinit, lambda_m, rho_m, Cp_m);
Variable *ptr_T = &T;
std::thread first (&Variable::initialize, ptr_T, ptr_grid);
first.join();
Вот прототип метода инициализации:
void Variable::initialize(Grid& grid_obj)
До того, как я попытался добавить поток, все работало как надо.
Мне просто интересно, если это не проблема компилятора? Может, что-то не так с моим кодом, я не могу заметить? Любые возможные исправления? Ниже я включил ошибку, возвращаемую компилятором. Как видите, я использую TDM GCC 5.1.0. Я использовал его с потоками раньше, и все работало вполне нормально.
В файле, включенном в C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include / c ++ / thread: 39: 0, из main.cpp: 13: C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / функционал: в экземпляре 'struct std :: _ Bind_simple (chal :: Variable, chal :: Grid)> ': C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / thread: 142:59: требуется из 'std :: thread :: thread (_Callable &&, _Args && ...) [with _Callable = void (chal :: Variable :: *) (chal :: Grid &);_Args = {chal :: Variable &, chal :: Grid &}] 'main.cpp: 45: 61: требуется отсюда C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/ c ++ / function: 1505: 61: ошибка: нет типа с именем 'type' в 'классе std :: result_of (chal :: Variable, chal :: Grid)>' typedef typename result_of <_Callable (_Args ...)>:: type result_type;^ C: /TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c ++ / функционал: 1526: 9: ошибка: нет типа с именем 'тип' в 'классе std :: result_of (chal :: Variable, chal :: Grid)> '_M_invoke (_Index_tuple <_Indices ...>)