c/c++ 重载 数组 操作符[] operator[ is ambiguous, as 0 also mean a null pointer of const char* type.
// 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 还是 空指针了....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南