将成员函数传递给QtConcurrent run()
pass member function to QtConcurrent run()
我试图传递一个成员函数给QtConcurrent::run()
我已经试过这样做了:
GDALDriver *poNITFDriver;
future = QtConcurrent::run(poNITFDriver,&GDALDriver::CreateCopy, pszDstFilename, poDataset, FALSE, papszOptions, pfnProgress, NULL);
但是我得到了一系列关于没有匹配函数调用的错误。
这是最初的调用:
poNITFDriver->CreateCopy(pszDstFilename, poDataset, FALSE, papszOptions, pfnProgress, NULL);
我做错了什么?run()能接受这么多参数吗?
这是我得到的错误:
error: no matching function for call to run(GDALDriver*&, GDALDataset* (GDALDriver::*)(const char*, GDALDataset*, int, char**, int (*)(double, const char*, void*), void*), const char**, GDALDataset**, bool, char***, int (**)(double, const char*, void*), NULL)
谢谢
必须将对象的指针作为第一个参数传递,将方法的地址作为第二个参数传递(然后在其后输入任何其他参数)。
看一下这个文档。看看这些章节:
- 使用成员函数 使用Lambda函数
具体来说,您可以使用boost::bind()
或std::tr1::bind()
在调用函数时绑定多个参数。这样做有很多原因:
- 调用超过5个参数的函数。
- 简化使用常量参数调用函数。
- 改变参数的顺序。
我认为你传递了超过5个参数。
相关文章:
- join() 失败,如果在线程内部调用 io_context.run()
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- QtConcurrent::mapped not compiling
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- C++ POCO - 如何在不使用 run() 方法的情况下启动线程池上的线程?
- TensorFlow c++ API 在 session->run() 上崩溃
- 使用 QtConcurrent::run() 修改成员变量?
- 如何在QtConcurrent::run中启动QTimer或为什么QVector<QTimer*>不起作用
- 如何将字符串数组传递到 QtConcurrent::run 中?
- 在 c++11 模式下使用 QtConcurrent::run with move only 参数
- QtConcurrent::run 是否可以与指向对象的智能指针一起使用
- 如何在没有竞争条件的情况下将 QFutureWatcher 与 QtConcurrent::run() 一起使用
- QtConcurrent::run with lambda on mac os 没有提供匹配函数
- 使用QtConcurrent::run连接单独线程上的信号/插槽
- QtConcurrent::run() 不接受 __stdcall/WINAPI 函数
- QtConcurrent::run() 不能处理超过 5 个参数?
- 在 QtConcurrent::run 中使用 QSqlDatabase 连接(伪连接池)
- 将成员函数传递给QtConcurrent run()
- 如何使用QtConcurrent::run调用指针作为参数的非类成员函数
- 我如何使用QtConcurrent::Run和QThread