最近在使用json數組時, 用0做下標有問題(Use of overloaded operator [] is ambiguous), 但用1做下標沒有問題, 我也是醉了。 網上到處搜了一下, 發現也有網友遇到。
// Note://int x = a[0].GetInt(); // Error: operator[ is ambiguous, as 0 also mean a null pointer of const char* type.int y = a[SizeType(0)].GetInt(); // Cast to SizeType will work.int z = a[0u].GetInt(); // This works too.
0u = SizeType(0)
Json::Value作為數組時,讀取0位置時,出現錯誤:Use of overloaded operator [] is ambiguous
Use of overloaded operator [] is ambiguous (with operand types 'const Json:Value' and 'int' ) void Parse(constJson::Value &jsonObject) { rmb = jsonObject[0].asDouble(); }
Json:Value[]運算符支持輸入的非負整型,即UInt或unsigned int。
而0作為索引值,也可能為空指針輸入, 類型檢查無法通過。
修改如下即可:
rmb = jsonObject[0U].asDouble();
或者:
rmb = jsonObject[SizeType(0)].asDouble();
說明: 0U 表示無符號的整數,這樣寫在自己的數組操作符重載的時候 區分 0 是 數值0 還是 空指針了....
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接
新聞熱點
疑難解答
圖片精選