到目前为止,范围运算符已经处理了我使用的任何Qt列表类型,QDomNodeList
除外。由于范围运算符定义为:"用作在一系列值上运行的传统for循环的更具可读性的等价物,例如容器中的所有元素。" i无法看到任何理由......
QDomNodeList domNodes = doc.elementsByTagName("peripheral");
for (QDomNode node : domNodes)
{
qDebug() << node.nodeName() << "test";
}
...不会编译,但普通的旧for循环将:
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])
^
^
std::end
加上相同的错误。