首页 > 解决方案 > 为什么在迭代 yaml_cpp 节点时看到此 CLion 错误?

问题描述

我对包含项目列表的yaml-cpp节点进行了以下简单迭代:

for (const auto &group_entry: node["groups"]) { /*...*/ }

代码按预期编译和工作,但在 CLion IDE 中,它被视为错误,声称“const YAML::Node' 不是有效的范围类型”。这有什么问题吗?如果没有,我怎么能删除这个烦人的亮点?这是一个 C++17 项目。

标签: yamlc++17clion

解决方案


一般来说,编译器能更好地判断某些代码是否有效。您的代码非常好。

该错误消息还向我们暗示了似乎是什么问题:它谈到了一个范围类型,在这种情况下根本不是一个东西(C++20ranges库确实存在,但在这里无关紧要)。您正在使用的range-for只需要range-expression是一个数组、定义了beginend函数,或者是一个花括号初始化列表

所以我们看到的可能是 CLion 没有正确检查这种限制的结果,可能是通过重用来自 JetBrains 的其他不适合 C++ 的 IDE 的代码。因此,您创建的问题是消除此错误的适当方法。


推荐阅读