@simply_user

Как передать конструктору класса thread функцию-член класса?

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы