C++ 为什么范围操作符不与QDomNodeList一起工作
到目前为止,range操作符已经处理了我使用的任何Qt列表类型,除了C++ 为什么范围操作符不与QDomNodeList一起工作,c++,qt,C++,Qt,到目前为止,range操作符已经处理了我使用的任何Qt列表类型,除了QDomNodeList。由于range操作符被定义为:“作为一个更可读的等价物,用于在一个值范围内操作的传统for循环,例如容器中的所有元素。”我看不出任何原因 QDomNodeList domNodes = doc.elementsByTagName("peripheral"); for (QDomNode node : domNodes) { qDebug() << node.nodeName() &
QDomNodeList
。由于range操作符被定义为:“作为一个更可读的等价物,用于在一个值范围内操作的传统for循环,例如容器中的所有元素。”我看不出任何原因
QDomNodeList domNodes = doc.elementsByTagName("peripheral");
for (QDomNode node : domNodes)
{
qDebug() << node.nodeName() << "test";
}
对于
std::end
可能重复的类似问题,加上相同的错误,正确。但它是基于Qt自己的代码> Furace关键字,而不是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])
^
^