我需要在我的android应用程序中使用线程,因为我正在使用原生opencv进行图像处理。这是我的代码:
void Detector::processBinary(Mat &binary) {
//do stuff
}
void Detector::Detect() {
...
thread t1(processBinary, binary);
t1.join();
}
然而,每当我尝试运行应用程序时,我都会从线程t1(processBinary,binary)收到错误"无效使用非静态成员函数"。然而,这条线在visualstudio中非常适用。有人能帮我吗?提前感谢!
您使用的成员函数需要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();
}