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()
绑定到了一个函数对象。