I've prototyped my function in my mainwindow.h class file(header?):
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
void receiveP();
Then in my main.cpp class file I tell the function what to do:
void MainWindow::receiveP()
{
dostuff
}
Then in the main function of my main.cpp class file I try to use it in a thread:
std::thread t1(MainWindow::receiveP);
t1.detach();
Which gives me the error "invalid use of non-static member function 'void MainWindow::receiveP()'.
You're attempting to pass a member function pointer to the constructor of the thread
class, which expects a normal (non-member) function pointer.
Pass in a static method function pointer (or pointer to a free function) instead, and explicitly give it the instance of your object:
// Header:
static void receivePWrapper(MainWindow* window);
// Implementation:
void MainWindow::receivePWrapper(MainWindow* window)
{
window->receiveP();
}
// Usage:
MainWindow* window = this; // Or whatever the target window object is
std::thread t1(&MainWindow::receivePWrapper, window);
t1.detach();
Make sure that the thread terminates before your window object is destructed.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.