3

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>

4

0 に答える 0