C++ 将函数传递给QtConcurrent::map

C++ 将函数传递给QtConcurrent::map,c++,qt4,qtconcurrent,C++,Qt4,Qtconcurrent,这是我想要的代码: class Machine { private: QSet<State*> states; State* step(State* st){/*...*/} public: void makeStep(){ //... QTConcurrent::map(states, step); //... } 类机器{ 私人: QSet状态; 状态*步骤(状态*st){/*…*/} 公众: void

这是我想要的代码:

class Machine {

private:
   QSet<State*> states;
   State* step(State* st){/*...*/}

public:
   void makeStep(){
        //...
        QTConcurrent::map(states, step);
        //...
   }
类机器{
私人:
QSet状态;
状态*步骤(状态*st){/*…*/}
公众:
void makeStep(){
//...
QTConcurrent::map(状态,步骤);
//...
}
我的问题是:这不会编译,因为
step()
既不是全局函数,也不是
State
的成员。但从逻辑上讲,这是正确的,因为
step()
不会修改任何东西-它只访问映射结构,而且是只读的

但是,应该修改的是集合
状态
。我想变得聪明,同时修改每个
状态*
(以非阻塞方式)


我应该将
step()
global吗?这会有帮助吗?

我不能,因为我使用的是对象的一个成员。这就是
step()
的内容。建议您尝试过函数的
std::bind(&Machine::step,this)
吗?我最终将
step()
绑定到了一个函数对象。