QtConcurrent::map(vector, &MyClass::spin) 直接傳遞非靜態成員函數指針會編譯報錯,因為缺少 this 指針。
class MyClass {
public:
static void spin(int &value) { value *= 2; }
};
// 調用
QtConcurrent::map(vector, &MyClass::spin);
this(推薦,靈活)MyClass obj;
QtConcurrent::map(vector, [&obj](int &value) {
obj.spin(value); // 調用非靜態成員
});
std::bind / std::functionMyClass obj;
QtConcurrent::map(vector, std::bind(&MyClass::spin, &obj, std::placeholders::_1));
this 或 &obj。#include <execution>
std::for_each(std::execution::par, vec.begin(), vec.end(),
[&obj](int &v) { obj.spin(v); });