передать функцию-член в QtConcurrent run () - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь передать функцию-член в 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 Ответ

2 голосов
/ 11 июля 2011

Вам нужно будет передать указатель объекта в качестве первого аргумента и адрес метода в качестве второго аргумента (затем следовать за любым другим аргументом).

Посмотрите эту документацию. Взгляните на разделы:

В частности, вы можете использовать boost::bind() или std::tr1::bind() для привязки ряда аргументов к функции при вызове. Есть несколько причин для этого:

  • Для вызова функции, которая принимает более 5 аргументов.
  • Для упрощения вызова функции с постоянными аргументами.
  • Изменение порядка аргументов.

Я думаю, что вы передали более 5 параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...