gpt4 book ai didi

c++ - QtConcurrency::mapped 成员函数

转载 作者:行者123 更新时间:2023-11-30 02:44:51 25 4
gpt4 key购买 nike

如何将 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 它应该可以工作......

最佳答案

也许绑定(bind)?如果您使用的是 C++11,则为 std::bind,否则为 std::tr1::bind 或 boost::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 */));

我们在代码中使用它;例如:https://github.com/clementine-player/Clementine/blob/d03c1aa2419a0ceefd7f65114c1ac8991790b716/src/playlist/playlistbackend.cpp#L187

希望对您有所帮助。

关于c++ - QtConcurrency::mapped 成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25054722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com