2011-07-11 52 views
0

我想传递一个成员函数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);

我在做什么错?可以运行()接受许多参数?

这是错误我得到:

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) 

感谢

回答

2

你将不得不通过对象作为第一个参数和方法作为第二个参数的地址的指针(然后按照它由任何其他论点)。

看看this文档。看看以下部分:

具体而言,您可以使用boost::bind()std::tr1::bind()调用时多个参数绑定到一个函数。有很多原因可以做到这一点:

  • 调用一个函数,该函数接受5个以上的参数。
  • 为了简化使用常量参数调用函数。
  • 更改参数的顺序。

我想你有超过5个参数传递到那里。

+0

编辑以反映第一个参数是指向对象的指针 – Derek

+0

@Derek:您将不得不发布错误。请这样做。发布了 –

+0

。谢谢检查 – Derek