是否可以创建一个从不同的 class 调用函数的线程?

Is it possible to create a thread that calls a function from a different class?

我正在开发 C++11 多线程 GUI 程序。

所以我有 DevToolsMainWindow 类。我想从 MainWindow clicked() 事件函数调用属于 DevTools 的函数。 (所有对象定义都是在 类' 定义上创建的)。

函数 MainWindow 调用 Obtain_XY_Thread:

void MainWindow::on_obtain_xy_clicked()
{
    DevTools.Obtain_XY_Thread();
}

所以 DevTools::Obtain_XY_Thread() 被调用并创建了一个线程 Obtain_XY 但我真正想要的是直接调用 Obtain_XY:

void DevTools::Obtain_XY_Thread()
{
    thread obtain_xy(&DevTools::Obtain_XY, *this);
    obtain_xy.detach();
}

void DevTools::Obtain_XY()
{
    for(int i=0;i<500;i++){
        //does something
    }
}

这可行,但我认为这不是正确的方法。有没有什么方法可以调用 Obtain_XY 而无需创建另一个函数?我怎样才能直接在 MainWindow::on_obtain_xy_clicked() 上创建线程?

只需添加 std::thread:

即可解决此问题
void MainWindow::on_obtain_xy_clicked()
{
    std::thread obtain_xy(&DevTools::Obtain_XY, &DevTools);
    obtain_xy.detach();
}