error: invalid use of non-static member function ‘void MainWindow::Receive_udp()’ 64 | m_SocketWorkThread.reset(new boost::thread(Receive_udp));
时间: 2023-11-28 17:04:17 浏览: 139
Python系列:error: invalid command ‘egg-info‘ 安装optuna时报错
这个错误是因为你在创建线程时,将一个非静态成员函数 `Receive_udp()` 作为线程函数传递给了 `boost::thread`,而非静态成员函数需要一个对象才能被调用,而你并没有传递一个对象给它。
解决这个问题的方法是,将 `Receive_udp()` 函数声明为静态成员函数,或者将其定义为一个普通函数,然后将对象作为参数传递给它。例如:
```c++
static void Receive_udp();
```
或者
```c++
void Receive_udp(MyObject* obj);
```
然后在创建线程时,传递一个对象给它:
```c++
m_SocketWorkThread.reset(new boost::thread(&MyObject::Receive_udp, this));
```
注意,第二种方法需要你将 `Receive_udp()` 函数的定义修改为接受一个 `MyObject*` 参数。
阅读全文