Android NDK线程使用非静态成员函数无效



我需要在我的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();
}

相关内容

  • 没有找到相关文章

最新更新