Я из 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] () {
^
Это должно было быть добавлено в мой файл .pro:
CONFIG += c++11
Я предполагаю, что хотя QT 5 поддерживает новую перегрузку SIGNAL / SLOT для лямбда-функций, он по-прежнему не использует c ++ 11 по умолчанию. Странно, интересно почему.
Других решений пока нет …