C++ error: no matching function for call to XXX问题 20

编译的时候发现一个很奇怪的问题:一个类的一个接口函数原型是这样intfunc(constchar*str,int&value);但是,我调用的时候:intiValue;t... 编译的时候发现一个很奇怪的问题:
一个类的 一个接口函数原型是这样 int func(const char* str,int& value);
但是,我调用的时候:
int iValue;
tmp->func("XXXX",iValue);
其中tmp是一个类对象,
编译报错匹配不上那个func。
什么情况下才可能出现这种情况啊,
找了下代码中其他地方,有同样的调用却没事。
头文件包含了
有大神有类似的经验吗
报错说:
error: no matching function for call to ‘ A::func(const char [5], int&)’


如果入参传"XXXXX"这样,就会提示const char[N]不匹配,
如果入参传一个前面已经定义的char*,就会提示const char*&不匹配。
不知道为什么传入普通的指针,但是提示是指针的引用,进而导致匹配不到函数。
试了下新增函数,任何对象的指针都会提示是指针的引用,然后匹配不上入参是指针的那个
展开
 我来答
Dr茗
2019-11-12
知道答主
回答量:2
采纳率:0%
帮助的人:1337
展开全部
这个是因为你的第一个形参是const char[5], 这样的话相当于你的数组是常量数组。如果你传入的不是引用的话,在调用函数传入形参的时候,相当于把实参的拷贝赋值给形参。对于const修饰的常量数组是不能进行赋值的,当你调用func这个函数时,编译器会寻找形参类型符合条件的func函数进行函数匹配,编译器希望找到的函数是func(char[5], int&)而不是func(const char[5], int&)。
切俊健
2015-09-21 · TA获得超过1281个赞
知道小有建树答主
回答量:824
采纳率:100%
帮助的人:515万
展开全部
感觉你代码中的tmp并不是含有int func(const char* str,int& value)这个函数的类,请检查一下tmp是否是class A实例的指针。
追问
就是类实例。
刚试了下,又加了个函数大概这样:func2(B* pB,int& i);
调用的时候会报错说,no match func for func2(B*& pB,int& i);
其中B是一个类,就是编译的时候,指针变成指针的引用了,
调用的时候仅仅是传进去了个指针而已啊- -好神奇
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baby珊珊可爱
2019-12-19
知道答主
回答量:1
采纳率:0%
帮助的人:674
展开全部
我也遇到了一样的问题,请问怎么搞定的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式