使用旧式循环,我可以深入研究 aQJsonArray并在下面的示例中为每个数组项添加元素“foo”和现有元素“bar”的内容。我如何使用基于 C++11 的范围来做到这一点?
// QJsonArray oldArray contains an array of which one element is "bar"
QJsonArray newArray;
int i, b = oldArray.count();
for (i=0; i<n; ++i) {
QJsonObject element = oldArray.at(i).toObject();
element["foo"] = element["bar"];
newArray.append(element);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法(无可否认是反复试验):
for (auto& element : oldArray) {
element["foo"] = element["bar];
newArray.append(element);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误
对类型“QJsonValueRef”的非常量左值引用无法绑定到“QJsonValueRef”类型的临时变量
for (const auto& element : oldArray) {
...
Run Code Online (Sandbox Code Playgroud)
我收到警告
循环变量“元素”始终是副本,因为“QJsonArray”类型的范围不返回引用
for (const auto element : oldArray) {
element["foo"] = element["bar];
...
Run Code Online (Sandbox Code Playgroud)
我收到错误
'const QJsonValueRef' …