PDA

View Full Version : QtConcurrent::run documentation examples not compiling



GrJo
12th November 2010, 09:26
Hi,

i just discovered QtConcurrent::run and wanted to give it a try. Unfortunately, the examples from the official documentation (http://doc.qt.nokia.com/4.6/qtconcurrentrun.html) do not compile and cause a bunch of error messages.
What i want to do is calling a non-const member function, just like in the example from the section "Using Member Functions":



// call 'void QImage::invertPixels(InvertMode mode)' in a separate thread
QImage image;
QFuture<void> future = QtConcurrent::run(image, &QImage::invertPixels, QImage::InvertRgba);

that code snippet (copied from the docs) does not compile - the call to QtConcurrent::run generates the following error messages.

1> error C2780: 'QFuture<T> QtConcurrent::run(const Class *,T (__thiscall Class::* )(Param1,Param2,Param3,Param4,Param5) const,const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &,const Arg5 &)': Erwartet 7 Argumente - 3 unterstützt
1> c:\qt\qt-win-4.6.1-x86\include\qtcore\../../src/corelib/concurrent/qtconcurrentrun.h(283): Siehe Deklaration von 'QtConcurrent::run'
1> error C2780: 'QFuture<T> QtConcurrent::run(const Class *,T (__thiscall Class::* )(Param1,Param2,Param3,Param4) const,const Arg1 &,const Arg2 &,const Arg3 &,const Arg4 &)': Erwartet 6 Argumente - 3 unterstützt
1> c:\qt\qt-win-4.6.1-x86\include\qtcore\../../src/corelib/concurrent/qtconcurrentrun.h(278): Siehe Deklaration von 'QtConcurrent::run'
1> error C2780: 'QFuture<T> QtConcurrent::run(const Class *,T (__thiscall Class::* )(Param1,Param2,Param3) const,const Arg1 &,const Arg2 &,const Arg3 &)': Erwartet 5 Argumente - 3 unterstützt
1> c:\qt\qt-win-4.6.1-x86\include\qtcore\../../src/corelib/concurrent/qtconcurrentrun.h(273): Siehe Deklaration von 'QtConcurrent::run'
1> error C2780: 'QFuture<T> QtConcurrent::run(const Class *,T (__thiscall Class::* )(Param1,Param2) const,const Arg1 &,const Arg2 &)': Erwartet 4 Argumente - 3 unterstützt
1> c:\qt\qt-win-4.6.1-x86\include\qtcore\../../src/corelib/concurrent/qtconcurrentrun.h(268): Siehe Deklaration von 'QtConcurrent::run'
1> error C2784: "QFuture<T> QtConcurrent::run(const Class *,T (__thiscall Class::* )(Param1) const,const Arg1 &)": template-Argument für "const Class *" konnte nicht von "QImage" hergeleitet werden.
1> c:\qt\qt-win-4.6.1-x86\include\qtcore\../../src/corelib/concurrent/qtconcurrentrun.h(263): Siehe Deklaration von 'QtConcurrent::run'
<snip>


I have included QtConcurrentRun and QImage.
Compiling on MS Visual Studio C++ 2008, Win7
Qt Version: 4.6

GrJo
17th November 2010, 08:50
Post is invalid - our build system uses a custom MOC which causes the problem. Code compiles just fine when using a "normal QT" project.