如何将QtConcurrent::mapped
与成员函数一起用作运算符?目前我正在使用一个可调用对象(这是一个丑陋的解决方案):
struct Vectorizer {
Vectorizer(DialogCreateSamples* cs)
: m_createSamples(cs) { }
typedef QString result_type;
QString operator()(const QString &input)
{
return m_createSamples->generateVector(input);
}
DialogCreateSamples* m_createSamples;
};
QFuture<QString> future = QtConcurrent::mapped(m_inputs,Vectorizer(this));
还尝试传递lambda表达式,但编译器说lambda中没有定义result_type
。这适用于QtConcurrent::map
,因为map
不需要result_type
。因此,如果我可以在lambda中添加typedef
,它应该可以工作......
答案 0 :(得分:3)
也许绑定?如果您正在使用C ++ 11或std :: tr1 :: bind或boost :: bind,则std :: bind。
类似的东西:
QtConcurrent::mapped(m_inputs, std::bind(&Class::member_function, pointerToObjectOfTypeClass /* this? */, _1 /* placeholder for argument of your function filled by data from m_inputs */));
希望它有所帮助。