встроенные функции и QObject :: connect — ожидаемое выражение

Я из Objective-C и люблю, что встроенные функции пришли к c ++ в c ++ 11, они полезны! К сожалению, у меня возникла проблема с моим слотом (эта установка немного напоминает мне протоколы и делегаты, мне интересно, смогу ли я создать класс, который будет вести себя как делегат, как в obj-c).

#include <QCoreApplication>
#include <QtNetwork/QTcpSocket>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QTcpSocket *socket = new QTcpSocket;
socket->connectToHost("qt.nokia.com", 80);
QObject::connect(socket, &QTcpSocket::connected, [socket, page] () {
socket->write(QByteArray("GET " + "index.html" + "\r\n"));
});
QObject::connect(socket, &QTcpSocket::readyRead, [socket] () {
qDebug()<< "GOT DATA "<< socket->readAll();
});

return a.exec();

}

Это дает мне следующую ошибку:

main.cpp:10: error: expected expression
QObject::connect(socket, &QTcpSocket::connected, [socket, page] () {
^

3

Решение

Это должно было быть добавлено в мой файл .pro:

CONFIG += c++11

Я предполагаю, что хотя QT 5 поддерживает новую перегрузку SIGNAL / SLOT для лямбда-функций, он по-прежнему не использует c ++ 11 по умолчанию. Странно, интересно почему.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]