gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:48:17 28 4
gpt4 key购买 nike

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

谢谢

最佳答案

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

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

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

  • 调用超过 5 个参数的函数。
  • 简化使用常量参数调用函数。
  • 改变参数的顺序。

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

关于c++ - 将成员函数传递给 QtConcurrent run(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6654878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com