最近用C++11,在用thread()传对象参数时,调用其他类的方法作为线程执行函数,该传入的执行函数有两个引用参数.
class MyClass {
public:
void run(SeetaImageData face_image, SeetaRect& face_roi) {
std::cout << "Hello from thread " << std::this_thread::get_id() << std::endl;
}
};
int main()
{
MyClass obj;
std::thread t(&MyClass::run, &obj, image, face);
t.join();
}
线程执行函数:void run(SeetaImageData face_image, SeetaRect& face_roi)
提示 no type named ‘type’ in ‘struct std::__invoke_result........
解决方式:
int main()
{
MyClass obj;
std::thread t(&MyClass::run, &obj, std::ref(image), std::ref(face));
t.join();
}
即使你的类型已经是引用,还是得加std::ref(),否则编译器不认。