我需要在我的Android应用程序中使用线程,因为我正在使用本机opencv进行图像处理。这是我的代码:
void Detector::processBinary(Mat &binary) {
//do stuff
}
void Detector::Detect() {
...
thread t1(processBinary, binary);
t1.join();
}
然而,我得到错误"无效使用非静态成员函数"每当我尝试运行应用程序时,从线程t1(processBinary,二进制)。然而,这条线在视觉工作室中完美运行。谁能帮我这个?提前致谢!
答案 0 :(得分:1)
使用成员函数,需要this
参数(必须在某个对象上调用它)。有两种选择:
使用静态类函数(或非类函数):
void processBinary(Mat &binary) {
//do stuff
}
void Detector::Detect() {
...
thread t1(processBinary, binary);
t1.join();
}
如果我们想要利用成员函数,或者传递适当的参数:
void Detector::processBinary(Mat &binary) {
//do stuff
}
void Detector::Detect() {
...
thread t1(&Detector::processBinary, *this, binary);
t1.join();
}