内联函数和QObject::connect - 预期表达式

3

我来自Objective-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] () {
                             ^

2
你的编译器是否启用了C++11?例如,lambda表达式可以使用吗? - Pavel Strakhov
1个回答

2

我需要在我的.pro文件中添加以下内容:

CONFIG += c++11

我猜尽管QT 5支持使用lambda函数的新的SIGNAL/SLOT重载,但它仍然没有默认使用c++11。很奇怪,我不知道为什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接