Как передать конструктору класса thread функцию-член класса?
Здравствуйте!
Никак не могу передать экземплярный метод конструктору потока. Пробовал уже передать указатель на метод, но всё равно получаю одну и ту же ошибку: error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
Передаю вот так: thread th(&Producer::WorkingMethod);
Заранее спасибо!
Класс thread понимает только функторы. А методу класса нужен еще указатель на сам класс. Поэтому указатель на метод вместе с this надо завернуть в функтор. Сейчас это красивее всего делается с помощью labmda функции. Еще можно использовать std::bind, сделанный специально для таких случаев, но ИМХО лямбда лучше читается.