Qtのqtconcurrentmapを使って画像を処理しようとしていますが、'void(ClassName ::)(QString&)'型の引数が 'void(ClassName :: *)(QString&)'と一致しません
argument of type 'void (ClassName::)(QString&)' does not match 'void (ClassName::*)(QString&)
私も
/Library/Frameworks/QtCore.framework/Headers/qtconcurrentmapkernel.h::
In member function 'bool QtConcurrent::MapKernel<Iterator, MapFunctor>::runIteration(Iterator, int, void*)
[with Iterator = QList<QString>::iterator, MapFunctor = void (ClassName::*)(QString&)]':
/Library/Frameworks/QtCore.framework/Headers/qtconcurrentmapkernel.h:73:
error: must use '.*' or '->*' to call pointer-to-member function in
'((QtConcurrent::MapKernel<QList<QString>::iterator, void (ClassName::*)(QString&)>*)this)->QtConcurrent::MapKernel<QList<QString>::iterator, void (ClassName::*)(QString&)>::map (...)'
を取得していますこれは、任意のアイデア私のコード
void ClassName::processImage(QString &f)
{
Image image;
image.read(qPrintable(f));
try {
//Apply effects on an Image
} catch (Magick::Exception & error) {
// Displaying any possible errors on the text browser
ui->textBrowser_error->setText(error.what());
}
}
void ClassName::processAll() {
foreach (QFileInfo f, list)
{ QString str(f.absoluteFilePath());
QList<QString> listof;
listof.append(str);
}
QFuture<void> future = QtConcurrent::map(listof, processImage);
}
のですか?
どのように私はそれを逃したことができますか?素晴らしい答え! 2番目のエラーはありますか? 私はまだそれを得ている – Sharethefun
そうだと思います。ドキュメントを見ると、 'map'メソッドは関数を第2のパラメータとして期待しています。このためにメンバー関数を使用するには、boost :: bind': 'boost :: bind(&ClassName :: processImage、this)'が必要です。 –
それは素晴らしいディエゴ、なぜあなたは6票を持っているのだろうか? 私はこのエラーが発生し、私はそのブーストライブラリを使用していないので、私は推測する: エラー: 'ブースト'が宣言されていません。 それは? – Sharethefun