std::future
複数のを に保存しようとしていQMap
ます。これQMap
は私のクラスのメンバー変数です:
QMap<QString, std::future<cv::Mat>> threads;
std::async
次のように、複数の呼び出しの結果をこのマップに保存したいと思います。
this->threads.insert(filename, std::async(std::launch::async, &MainInterface::readImage, this, path, true));
ここで非同期的に呼び出される関数readImage
は、次のようになります。
cv::Mat MainInterface::readImage(QString path, bool emitSignals) {
//some code
return image;
}
したがって、非同期関数の戻り値は になるはずstd::future<cv::Mat>
です。ただし、コンパイルしようとすると、Visual Studio 2015 で次のコンパイラ エラーが発生します。
no instance of overloaded function "QMap<Key, T>::insert [with Key=QString, T=std::future<cv::Mat>]" matches the argument list, argument types are: (QString, std::future<cv::Mat (&)(QString path, bool emitSignals)>), object type is: QMap<QString, std::future<cv::Mat>>
私を困惑させているのは、私が期待std::future<cv::Mat (&)(QString path, bool emitSignals)>
したものとは異なるreturn type です。std::future<cv::Mat>