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) :
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 result = QtConcurrent::run(&find_helper, workingCopy, snapshot, symbol);
Forcement, ça marche bien dans Qt Creator. Mais quand j'essaie de faire la même chose, j'ai droit à un beau :
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)
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)
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 QFuture<void> task = QtConcurrent::run(&DebuggingHelperBuildTask::run, buildTask);
j'ai encore droit à un
Code : Sélectionner tout - Visualiser dans une fenêtre à part void run(QFutureInterface<void> &future);
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. Mercierror: no matching function for call to ‘run(void (MyNamespace::MyClass::*)())’
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
Partager