lambda表达式中出现无效的使用Void表达式错误

Invalid Use of Void expression error in lambda expression

本文关键字:表达式 错误 Void 无效 lambda      更新时间:2023-10-16

在使用connect函数时,我正试图在Qt中使用lambda表达式
我的代码是这样的:

for(int i = propertyToNodeMap.size() -1 ; i >= 0 ; --i)
    {
        connect(&mainDialog,mainDialog.accepted(),[=](){
                ; //sth ....
        });
    }

我在Windows 7上使用Qt 5.3和MinGW作为编译器。
错误消息为:

error: invalid use of void expression
         });
          ^

此外,我使用了Qt文档和此处作为参考来实现这段代码。问候,

connect需要一个指向成员函数的指针:

connect(&mainDialog, &DialogClass::accepted, [=](){
    ; //sth ....
});

我假设DialogClassmainDialog是其实例的类。

问题既与lambda表达式无关,也与foreach语句(对于在上一版本之前对问题发表评论的人,现在将其删除)或"sth"部分无关
正确的连接形式如下:

connect(&mainDialog,&mainDialog.accepted(),[=](){   // missing '&'
                ; //sth ....
        });