我正在尝试将成员函数传递给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)
由于
答案 0 :(得分:2)
您必须将对象的指针作为第一个参数传递,将方法的地址作为第二个参数传递(然后通过任何其他参数跟随它)。
查看this文档。看看这些部分:
具体来说,您可以使用boost::bind()
或std::tr1::bind()
在调用时将多个参数绑定到函数。这样做有很多原因:
我认为你传递的参数超过5个。