error: ambiguous overload for ‘operator[]‘ (operand types are ‘CXmlNode‘ and ‘int‘)

bug:指向类的指针赋空 error: ambiguous overload for 'operator=' inXXX 指向类的指针赋空, typedef CallbackObjectHolder<DataCallback, int> OnDataRecvCallbackHolder; OnDataRecvCallbackHolder *sOnDataRecvCallback=NULL; nsresult MozAdhoc::AddDataRecvListener(DataCallback&a... 阅读详情

现象:

今天在练习封装xml重写 [ ] 操作符后,调用时出现error: ambiguous overload for ‘operator[]’ (operand types are ‘CXmlNode’ and ‘int’)。

函数原型:

class CXmlNode
{
	...
	CXmlNode& operator[](const char* nodename)
	{
		....
	}
	CXmlNode& operator[](uint32_t idx)
	{
		...
	}
	...
}

main.cpp:
xmlReader["system"]["logs"][0].Name();

原因:

查资料解释说是在调用时,参数有string 和 int 识别不出来。
个人测试总结原因为:传递的参数为number时,默认被识别为int,不会自动转换为无符号整型等,所以导致报错。

解决:

网上提供的解决办法是在调用的时候参数为int时在后面加u。这个方法可以解决,但是每次调用都要去注意这个感觉不方便,而且如果形参类型如果为long、unsigned long、 unsigned long long 则应该对应加 l、ul、ull。例如:

//举个栗子
CXmlNode& operator[](unsigned int idx);
xmlReader["system"]["logs"][0u].Name();

CXmlNode& operator[](long idx);
xmlReader["system"]["logs"][0l].Name();

CXmlNode& operator[](unsigned long idx);
xmlReader["system"]["logs"][0ul].Name();

个人解决方案:因为我的使用场景不会有超过int最大值(2147483647)的情况,所以直接将形参改为整型:

CXmlNode& operator[](int idx);

问题记录只为自己少踩几个坑,以及给遇到同样问题的提供一个思路,如有不对请大佬评论指出,以便及时更正不误导他人。

json error: Use of overloaded operator [] is ambiguous错误的解决方法 今天小编就为大家分享一篇关于json error: Use of overloaded operator [] is ambiguous错误的解决方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 立即下载

相关推荐

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 252

error: ambiguous overload for 'operator[]'

error: ambiguous overload for ‘operator[]’ (operand types are ‘CConfigTable {aka Json::Value}’ and ‘int’)原因; Json中包含数组的情况下,需要设置数组中内容,用以下方式; alarmout[0][“Name”] = “Noname”; 编译报错: error: ambiguous overl...

xinqjl的博客 8955

Nuvoton OpenTitan开源安全芯片技术解析与应用

硬件安全模块(HSM)作为可信计算基的核心组件,其设计透明度和可验证性正成为行业焦点。RISC-V架构凭借开源特性,为构建可审计的安全芯片提供了新范式。OpenTitan项目通过开放Verilog源码和形式化证明,实现了从物理不可克隆函数(PUF)到分层安全启动的全栈透明。该方案在lowRISC Voyager开发板上实测显示,安全启动时间小于200ms,性能损耗仅7%,显著优于传统黑盒方案。目前该技术已应用于Chromebook和数据中心,其40nm工艺版本更将功耗降至5μA待机水平,为物联网和边缘计算提

weixin_36303807的博客 397

C++11常见编译与链接错误解决总结

1、error: no matching function for call to 没有匹配的函数 2、'xxxx' was not declared in this scope 'xxxx' 在这个范围内没有声明 3、ambiguous overload for 'operator=' 重载不明确

灰太狼的小秘密 1万+

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

Qt Location实战:5分钟搞定地图插件切换与卫星图源加载(附完整代码)

本文是Qt Location开发系列教程的实战指南,详细讲解如何在Qt应用中快速实现地图插件(如Esri、OSM、MapboxGL)的动态切换与卫星图源的加载。通过清晰的代码示例,帮助开发者理解插件机制,解决常见配置问题,并在5分钟内构建出具备交互式地图切换功能的应用程序。

kafka6courier的博客 523

c++中类型转换运算符重载问题

C++类型转换重载运算符,冲突问题

qq_45577857的博客 2205

Claude Code auto mode 管理 subagents 的三道安全闸门

文章摘要: Claude Code的auto mode核心在于重构多代理协作的安全边界,将信任拆解为三个检查点:任务委派前评估主会话指令是否越界(v2.1.178新增);执行中强制subagent继承主会话权限模式,禁止自行降级;返回前审查完整动作历史并附加安全警告。这种设计通过动态运行时约束(classifier)与多层防线(tools限制、hooks等)结合,避免安全策略分散化。auto mode并非完全放权,而是通过减少常规提示+后台严格检查实现平衡,与隔离环境专用的bypassPermissions

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 73

ns-3.14编译报错:error: ambiguous overload for ‘operator<<’ (operand types are ‘ns3::ParameterLogger’ and

解决办法:降低g++的版本。 发生这个错误时,g++版本时7.5. 将其降低到5.5版本时可编译成功。

weixin_47633022的博客 2119

AUTOSAR OS演示项目搭建与验证

请注意,以上代码只是一个简单的示例,用于说明AUTOSAR OS项目的搭建和验证过程。此外,AUTOSAR OS还提供了其他功能和API,如事件、消息队列和任务间通信等,可以根据实际需求进行使用。AUTOSAR OS是AUTOSAR架构中的一部分,它提供了一种可移植且可扩展的操作系统,用于管理嵌入式应用程序的任务和资源。通过以上步骤,我们成功搭建了一个基于AUTOSAR OS的演示项目,并验证了应用程序任务的执行顺序。3、打开app.c文件,并编写一个简单的应用程序,作为我们的示例任务。

weixin_50547796的博客 195

头歌OpenGauss数据库-G.视图的使用

OpenGauss数据库-G.视图的使用

python一生之敌的博客 1383

netanim error: ambiguous overload for ‘operator<<’

在Ubuntu 20.04系统中编译netanim-3.107,遇到如下错误: g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DNS3_LOG_ENABLE -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -Iqtpropertybrowser/src -isystem /usr/include/x86_64-linux-gnu/qt5 -is

ygd11的专栏 1429

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

error: ambiguous overload for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream

ceres-solver安装时的operator报错

qq_60243596的博客 2496

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

StarRocks编译问题-logging.h:643:9: 错误:ambiguous overload for operator

【代码】logging.h:643:9: 错误:ambiguous overload for operator。

shangjg3的博客 433

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

error: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const char*)“command_

原文:https://blog.youkuaiyun.com/weixin_28748799/article/details/80668489 Json中包含数组的情况下,需要输出数组中内容,用以下方式 cout<<value[“command_set”][0][“cmd”].asString()<<endl; 结果报错:error: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const cha

sazass的博客 1628

error: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const char*)"command_

Json中包含数组的情况下,需要输出数组中内容,用以下方式cout&lt;&lt;value["command_set"][0]["cmd"].asString()&lt;&lt;endl;结果报错:error: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const char*)"command_...

weixin_28748799的博客 4343

Ambiguous method overloading for method ****** 异常的解决办法

Ambiguous method overloading for method ****** 异常 前言:关于该异常,我是在stackoverflow上(https://stackoverflow.com/questions/33410033/groovy-ambiguous-method-overload)找到解决方案的,大家也可以去看看专业人士说的,本人小白,说的比较通俗,大佬勿怪 异常如下: Caused by: groovy.lang.GroovyRuntimeException: Ambiguou

weixin_44005516的博客 6858

c++模板的问题解析-问题2

问题起源class Timer { public: Timer(){} };class TimeKeeper { public: TimeKeeper(const Timer& t){} TimeKeeper(){} std::string time; std::string get_time(){ return time; } friend std:

achao的专栏 1505

r: ambiguous overload for ‘operator[]’ in ‘value.Json::Value::operator[](((const char*)"command_

Json:Value下标既可以是int类型可以使string类型,std::size_t的类型是不明确的,所以不能使用std::size_t ,应该使用int 或者 unsigned int

分享嵌入式,移动端,智能应用,数据库等专业板块,记录知识碎片!!! 824

随心所欲string类型变量值

1.在定义一个string变量之后,变量会自动被赋上初值,初值为NULL; 2.对string变量类型可以采用operator "= "赋值,但此值不能为0 或NULL,因为0 或NULL均为字符类型常量,而string是字符串常量变量;例如: #include #include #include  using namespace std;   int main() {     s

shuaiby的专栏 816
上一篇: 2021-08-01
下一篇: error: undefined reference to `CustomButton::staticMetaObject‘
o.d.d
博客等级 码龄7年 1粉丝 5原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值