C++ 为什么范围操作符不与QDomNodeList一起工作

C++ 为什么范围操作符不与QDomNodeList一起工作,c++,qt,C++,Qt,到目前为止,range操作符已经处理了我使用的任何Qt列表类型,除了QDomNodeList。由于range操作符被定义为:“作为一个更可读的等价物,用于在一个值范围内操作的传统for循环,例如容器中的所有元素。”我看不出任何原因 QDomNodeList domNodes = doc.elementsByTagName("peripheral"); for (QDomNode node : domNodes) { qDebug() << node.nodeName() &

到目前为止,range操作符已经处理了我使用的任何Qt列表类型,除了
QDomNodeList
。由于range操作符被定义为:“作为一个更可读的等价物,用于在一个值范围内操作的传统for循环,例如容器中的所有元素。”我看不出任何原因

QDomNodeList domNodes = doc.elementsByTagName("peripheral");

for (QDomNode node : domNodes)
{
    qDebug() << node.nodeName() << "test";
}

对于
std::end

可能重复的类似问题,加上相同的错误,正确。但它是基于Qt自己的代码> Furace关键字,而不是C++范围运算符。也许答案符合这两个问题。答案提供了一个链接到容器类< /C> >,这是过时的,到目前为止,我没有发现Qt中关于“代码> QDMONNODLISTISE/<代码>不是容器类型的任何东西。QDMONNODLIST不提供基于循环的C++范围的迭代器。有人应该实现这一点(有人在这里:)无论是
foreach
还是基于范围的for循环都需要结构来实现
begin
end
,而QDomNodeList不需要。这就是为什么你不能这么做。好吧。在这两种情况下,可能都必须接受缺少的迭代器。由于这不是一个新问题,我假设这是由于某种原因(我没有看到)而缺失的。对另一个问题的答案并不满意,但对@acraig5075给出的评论比较满意
QDomNodeList domNodes = doc.elementsByTagName("peripheral");

for (int i = 0; i < domNodes.size(); ++i)
{
    QDomNode node = domNodes.at(i);
    qDebug() << node.nodeName() << "test";
}
error: 'begin' was not declared in this scope
     for (QDomNode node : domNodes)
...
note:   'std::begin'
     begin(_Tp (&__arr)[_Nm])
     ^
                          ^