Qt并发映射错误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
修改现有的项目,return 是一个无效的未来。如果要 return 形式为 QFuture<T>
的结果,则需要使用 QtConcurrent::mapped
.
我正在制作一个用于识别图像中车牌的应用程序。它工作正常,但现在我想将代码的图像分析部分移动到一个单独的线程。我正在使用 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
修改现有的项目,return 是一个无效的未来。如果要 return 形式为 QFuture<T>
的结果,则需要使用 QtConcurrent::mapped
.