json error: Use of overloaded operator [] is ambiguous错误的解决方法
最近在使用json数组时,用0做下标有问题(Useofoverloadedoperator[]isambiguous),但用1做下标没有问题,我也是醉了。网上到处搜了一下,发现也有网友遇到。
//Note: //intx=a[0].GetInt();//Error:operator[isambiguous,as0alsomeananullpointerofconstchar*type. inty=a[SizeType(0)].GetInt();//CasttoSizeTypewillwork. intz=a[0u].GetInt();//Thisworkstoo.
0u= SizeType(0)
Json::Value作为数组时,读取0位置时,出现错误:Useofoverloadedoperator[]isambiguous
Useofoverloadedoperator[]isambiguous(withoperandtypes'constJson:Value'and'int') voidParse(constJson::Value&jsonObject){ rmb=jsonObject[0].asDouble(); }
Json:Value[]运算符支持输入的非负整型,即UInt或unsignedint。
而0作为索引值,也可能为空指针输入,类型检查无法通过。
修改如下即可:
rmb=jsonObject[0U].asDouble();
或者:
rmb=jsonObject[SizeType(0)].asDouble();
说明: 0U 表示无符号的整数,这样写在自己的数组操作符重载的时候区分0是数值0还是空指针了....
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接