QWebSocket error abfangen



  • Hallo,

    ich stelle eine Verbindung via QWebSocket her (funktioniert). Ich habe folgendes Snippet gefunden, um etwaige Verbindungsfehler abzufangen und auszugeben:

    connect(m_webSocket, static_cast<void(QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error), [=](QAbstractSocket::SocketError error)
      {
        qDebug() << "Error occurred: " << error;
      });
    

    Lambda-Funktionen sind mir bekannt und wenn ich es richtig verstanden habe, muss man auf diese Art und Weise vorgehen, weil das Signal "error" überladen ist.

    Der folgende Ausdruck leuchtet mir allerdings nicht ein:

    static_cast<void(QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error)
    

    Was bedeutet "void(QWebSocket::*)" ? Und warum wird offenbar zuerst QAbstractSocket::SocketError in QWebSocket gecastet, obwohl daraufhin wieder ein QAbstractSocket::SocketError an die Funktion übergeben wird?

    Kann mir bitte jemand helfen? Danke vielmals!



  • Das ist kein Cast, sondern

    void(QWebSocket::*)(QAbstractSocket::SocketError)
    

    ist die Signatur der passenden error-Klassenfunktion (beachte, daß du daher auch die dort beschriebene QOverload-Variante verwenden kannst).



  • Vielen Dank für deine Antwort! 🙂

    Was bedeutet denn void(QWebSocket::*)?



  • QWebSocket::*
    

    ist ein Klassenfunktionszeiger (auch Methodenzeiger genannt).
    Und 'void' ist der Rückgabewert der Funktion und '(QAbstractSocket::SocketError)' die Parameter.



  • Vielen Dank! 🙂