2011-07-11 90 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