Проблема в том, что когда вы используете указатель на функцию-член, вам необходимо каким-то образом также указать параметр this
(т. Е. Объект, для которого должна быть вызвана функция-член).
Синтаксис этого довольно сложный, если вы не использовали его раньше. Это может быть хорошо читать http://www.parashift.com/c++-faq-lite/pointers-to-members.html.
Скажем, у вас есть класс Dog
и функция Dog::walkTheDog(int howlong_minutes)
. Тогда вы сможете использовать std::bind1st
и std::mem_fun
, чтобы сделать его подходящим для QtConcurrent::run
:
Dog dog;
// Walk this dog for 30 minutes
QtConcurrent::run(std::bind1st(std::mem_fun(&Dog::walkTheDog), &dog), 30);
std::bind1st(std::mem_fun(&Dog::walkTheDog), &dog)
возвращает объект, подобный функции, который связал функцию-член с конкретной собакой. С этого момента вы можете использовать его так же, как и автономную функцию.