2013-12-15 12 views
3

我來自Objective-C,並且喜歡內聯函數在C++ 11中使用C++,它們很有用!可悲的是,我在我的插槽有一個問題(這個設置讓我想起了一些協議和委託,我想知道是否可以創建一個專門類似於obj-c中的「委託」的類)。內聯函數和QObject :: connect - 期望表達式

#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]() { 
          ^
+2

您是否在編譯器中啓用了C++ 11?例如,lambda可以工作嗎? –

回答

2

這不得不被添加到我的.pro文件:

CONFIG += c++11

我想雖然QT 5支持新的信號/ lambda函數的SLOT超載,默認情況下它仍然不使用C++ 11。奇怪,我想知道爲什麼。