J'ai du mal a comprendre l'utilisation de QtConcurrent::run dans les sources de Qt Creator.

Dans le fichier cppfindreferences.cpp (ligne 257 : http://qt.gitorious.org/qt-creator/q...es.cpp#line257) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
result = QtConcurrent::run(&find_helper, workingCopy, snapshot, symbol);
QtConcurrent::run est appelé en donnant l'adresse de la fonction et 3 paramètres. Or la fonction utilise 4 paramètres (ligne 175 : http://qt.gitorious.org/qt-creator/q...es.cpp#line175) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
static void find_helper(QFutureInterface<Usage> &future,	
    const CppTools::CppModelManagerInterface::WorkingCopy workingCopy,
    Snapshot snapshot,
    Symbol *symbol)
Forcement, ça marche bien dans Qt Creator. Mais quand j'essaie de faire la même chose, j'ai droit à un beau :
error: no matching function for call to ‘run(void (*)(QFutureInterface<int>&)


Autre joyeuseté, dans qtoptionspage.cpp (ligne 309 : http://qt.gitorious.org/qt-creator/q...ge.cpp#line309)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
QFuture<void> task = QtConcurrent::run(&DebuggingHelperBuildTask::run, buildTask);
QtConcurrent::run est appelé sur une fonction membre non static d'une classe (http://qt.gitorious.org/qt-creator/q...spage.h#line65 et http://qt.gitorious.org/qt-creator/q...age.cpp#line71)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void run(QFutureInterface<void> &future);
j'ai encore droit à un
error: no matching function for call to ‘run(void (MyNamespace::MyClass::*)())’
Si quelqu'un a une explication (et de la doc QFutureInterface n'est pas documenté mais fait bien partie de Qt dans /include/QtCore/qfutureinterface.h ) je suis preneur. Merci


EDIT : en lisant la réponse sur un autre post, j'ai relu http://cpp.developpez.com/faq/cpp/?p...onction_membre. Ça m'explique pourquoi cela pose problème d'appeler une fonction membre quand je le fais... mais pas pourquoi cela fonctionne dans Qt Creator