并发映射错误c2440
QtConcurrent map error c2440
我正在制作一个识别图像中的车牌的应用程序。它工作得很好,但现在我想将代码的图像分析部分移动到一个单独的线程。我使用Qt 5.4。在阅读了文档之后,我决定使用QtConcurrent::map
是正确的,因为在处理图像之前,用户加载存储在列表中的文件(只有它们的名称)。下面是一些代码:
应该在线程中运行的函数的定义:
results detectPlates(const QString &file);
尝试使用多线程:
QFuture<results> r = QtConcurrent::map(files, &MainWindow::detectPlates)
files
定义为QList<QString>
results
是在我使用的库中定义的类型,如果这很重要。
这不会编译错误:
C2440 'initializing' cannot convert from `QFuture<void>` to `QFuture<results>`
当我将函数修改为<void>
时,我得到:
error c2064: term does not evaluate to a function taking 1 argument.
有什么问题吗?
QtConcurrent::map
修改项目,并返回一个空的未来。如果希望以QFuture<T>
的形式返回结果,则需要使用QtConcurrent::mapped
。
相关文章:
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- 由于类型从 C 转换为 C++,无法编译错误 C2440
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 编译方面的问题.错误E0413、E0434、C2664、C2440
- C++ 嵌套类模板 错误 C2440 '=':无法从'type'转换为'same type'
- 如何返回多维数组?错误C2440
- 常量转发引用给出错误 C2440:"正在初始化":无法从"常量标准::字符串"转换为"常量标准::字符串 &&"
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 编译错误 C2440,并在 boost odeint 中使用make_dense_output
- 错误 C2440:无法将"系统::D rawing::位图"转换为"系统::对象"
- 错误 C2440:"正在初始化":无法从"初始值设定项列表"转换为"std::vector<char *,std::分配器<_Ty>>
- 错误 C2440:'initializing':无法从 'BaseMenu' 转换为 'BaseMenu *'
- 在C++中构造模板函数时出现编译错误 C2664 和 C2440
- 错误 C2440:"正在初始化":无法从"std::string"转换为"双 *[]"
- 错误 C2440:"返回":无法转换。适用于 vs140,141,但不适用于 vs142
- 使用Malloc C 时C2440错误
- 错误 C2440:"=":无法从 'char *(__cdecl *)(int,int)' 转换为 en 'GetItemText_t'
- c++ C2440 错误无法从"const BWAPI::UpgradeType"转换为"const BWAPI::Type *"
- 在 Visual Studio 10 中使用类型转换运算符重载时出现 C2440 错误
- C++ C2440 错误,无法从 'std::_String_iterator<_Elem,_Traits,_Alloc>' 转换为 'LPCTSTR'