[英]c++ invalid conversion from int* to int
我有以下C ++代码:
#include <iostream>
using namespace std;
template<class T>
T f(T x, T y)
{
return x+y;
}
int f(int x, int y)
{
return x-y;
}
int main()
{
int *a=new int(3), b(23);
cout<<f(a,b);
return 0;
}
我收到这些错误:从“ int *”到“ int”的无效转换
初始化'int f(int,int)'的参数1。 这是什么意思 ?
谢谢
您需要在调用f
取消引用a
。 这是因为a
是一个指向 int
的指针 ,而b
是一个裸int
。 取消引用指向int
的指针将返回一个int
。 这导致函数f
被两个整数调用。
cout<<f(*a,b);
请告诉我们您想实现什么目标?
您需要使用*运算符从'a'指针获取值。
f(*a,b) //this invocation should work.
不管该代码编译没有错误,它都是丑陋的
int f(int x, int y)
{
return x-y;
}
在上述函数中,第一个参数需要一个整数参数,而不是指向整数值的地址。 因此,您需要确保功能参数的数据类型必须与功能参数的数据类型匹配。 否则,此类编译错误将始终在编译时弹出。
因此,根据您的情况,有以下解决方案:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.