Не получается создать поток thread (c++11) внутри метода класса - каждый раз ошибка компиляции:
C:\Qt\Qt5.8.0_mingw\Tools\mingw530_32\i686-w64-mingw32\include\c++\functional:1505: ошибка: no type named 'type' in 'class std::result_of(Values_Refresher_Class*, QTableWidget*, Values_Refresher_Class*)>' typedef typename result_of<_Callable(_Args...)>::type result_type;
C:\Qt\Qt5.8.0_mingw\Tools\mingw530_32\i686-w64-mingw32\include\c++\functional:1526: ошибка: no type named 'type' in 'class std::result_of(Values_Refresher_Class*, QTableWidget*, Values_Refresher_Class*)>' _M_invoke(_Index_tuple<_Indices...>)
Вот код:
#include <thread>
// Функция запуска потока
void Values_Refresher_Class::Start(QTableWidget *Table)
{
// Установить флаг работы потока
To_Work = true;
// Задать потоку функцию
thread Refresher_Thread = thread(&Values_Refresher_Class::Refresher_Handler, Table, this);
}
// Функция обработчика потока
void Values_Refresher_Class::Refresher_Handler(QTableWidget *Table)
{
// Пока установлен флаг работы потока
while(To_Work)
{
// Обновить список переменных
Refresh_Values(Table);
// Остановить поток на Refresh_Delay
QThread::sleep(Refresher_Delay);
}
}
Облазил кучу форумов и никак не могу понять в чем дело- если поток создавать в main, то все работает, но если перенести поток в класс, то сразу же все перестает работать. В чем может быть дело?
Работаю в QT Creator под MinGW. Использую не Qt-шные потоки, а стандартные, т.к. хочу научиться с ними работать
this должен идти первым из аргументов:
::std::thread Refresher_Thread{&Values_Refresher_Class::Refresher_Handler, this, Table};
Метод Refresher_Handler не статический, поэтому у него есть еще один скрытый параметр: this для которого будет вызван метод Refresher_Handler.
Либо объявите его статическим, либо добавьте дополнительный аргумент в конструктор thrread :
thread(&Values_Refresher_Class::Refresher_Handler, this, Table, this);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости