Не получается создать поток 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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В процессе изучения C++ решал вот эту задачуЕсли кратко, то экземпляры нешаблонного класса Any (который и нужно реализовать) должны иметь способность...
Задали написать арканоидВозникла проблема с моментом физики поведения мяча, мяч и дощечка ( от которой он отскакивает ) представляют собой...