将成员函数传递给QtConcurrent run()

时间:2011-07-11 18:42:23

标签: c++ qt

我正在尝试将成员函数传递给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)

由于

1 个答案:

答案 0 :(得分:2)

您必须将对象的指针作为第一个参数传递,将方法的地址作为第二个参数传递(然后通过任何其他参数跟随它)。

查看this文档。看看这些部分:

具体来说,您可以使用boost::bind()std::tr1::bind()在调用时将多个参数绑定到函数。这样做有很多原因:

  • 调用一个超过5个参数的函数。
  • 简化调用具有常量参数的函数。
  • 更改参数的顺序。

我认为你传递的参数超过5个。