He creado un prototipo de mi función en mi mainwindow.h archivo de clase(cabecera?):

    class MainWindow : public QMainWindow
{
    Q_OBJECT

    public:
    void receiveP();

A continuación, en mi main.cpp archivo de clase le digo a la función de qué hacer:

void MainWindow::receiveP()
{
     dostuff
}

A continuación, en la función main de mi main.cpp archivo de clase de trato de usarlo en un hilo:

 std::thread t1(MainWindow::receiveP);
 t1.detach();

Que me da el error de «invalid uso de la función miembro no estático ‘void MainWindow::receiveP()’.

InformationsquelleAutor user3466884 | 2014-03-30

1 Comentario

  1. 6

    Estás intentando pasar un miembro de la función de puntero para el constructor de la thread clase, en la que se espera una normal (no miembro) de la función de puntero.

    Pasar en un método estático de la función de puntero (o un puntero a una función libre) en su lugar, y de forma explícita darle la instancia del objeto:

    //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();

    Asegúrese de que el subproceso termina antes de la ventana de su objeto se destruye.

Dejar respuesta

Please enter your comment!
Please enter your name here