在lambda表达式中使用Void表达式错误无效

时间:2014-09-11 07:43:34

标签: c++ qt c++11 lambda signals-slots

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

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文档和here作为参考来实现这段代码。 的问候,

2 个答案:

答案 0 :(得分:0)

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

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

我假设DialogClassmainDialog是一个实例的类。

答案 1 :(得分:-1)

问题既不与lambda表达式有关,也与foreach语句无关(对于在上一版之前对该问题进行评论,现在已被删除的人)或“sth'一部分。
正确的连接形式如下:

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