深入解析:【Qt】之【Get√】【Bug】通过值捕获(或 const 引用捕获)传进 lambda,会默认复制成 const

通过值捕获(或 const 引用捕获)传进 lambda,会默认复制成 const。

背景

匿名函数外部定义 QSet<QString> nameSet,需要传入匿名函数使用修改

connect(dlg, ..., [nameSet](...) {
nameSet.insert(name); // ❌ 这里其实是 const QSet
});

所以报错:

XXX.cpp:604:33: No matching member function for call to 'insert'
qset.h:155:21: candidate function not viable: 'this' argument has type 'const QSet', but method is not marked const
qset.h:157:21: candidate function not viable: 'this' argument has type 'const QSet', but method is not marked const
qset.h:179:14: candidate function not viable: requires 2 arguments, but 1 was provided

解决:

使用引用&捕获

connect(dlg, ..., [&nameSet](...) {
});
posted on 2025-06-08 00:39  ljbguanli  阅读(11)  评论(0)    收藏  举报