передать функцию в QtConcurrent :: map - PullRequest
1 голос
/ 24 ноября 2011

Вот мой желаемый код:

class Machine {

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

public:
   void makeStep(){
        //...
        QTConcurrent::map(states, step);
        //...
   }

Моя проблема: это не компилируется, поскольку step() не является ни глобальной функцией, ни членом State. Но с логической точки зрения это было бы правильно, потому что step() не изменяет ничего - он только получает доступ к структуре карт, но, опять же, только для чтения.

Что нужно изменить, тем не менее, это набор states. Я хотел быть умным и модифицировать каждый State* одновременно (без блокировки).

Должен ли я сделать step() глобальным? Это поможет?

...