1.传入函数本身的指针
auto searchChild = [](auto&& self, QTreeWidget* item) {
int count = item->childCount();
if (count <= 0) return;
for (int i = 0; i < count; i++) {
self(self, item->child(i));
}
};
// 调用函数
searchChild(searchChild, curItem);
2.std::function包装为一个函数指针
//[&]是为了在lamada内部可以获取到函数searchChild
std::function<void(QTreeWidget*)> searchChild = [&](QTreeWidget* item) {
int count = item->childCount();
if (count <= 0) return;
for (int i = 0; i < count; i++) {
searchChild(item->child(i));
}
};
// 调用函数
searchChild(curItem);
C++用lamada表达式写递归函数的两种方法
最新推荐文章于 2024-02-20 22:02:27 发布