c++从int*到int的转换无效
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
。这导致使用两个int调用函数f
。
cout<<f(*a,b);
请告诉我们您想要实现什么目标??
您需要使用*运算符从"a"指针中获取值。
f(*a,b) //this invocation should work.
不管这个代码编译时没有错误,它都是丑陋的
int f(int x, int y)
{
return x-y;
}
在上面的函数中,第一个参数需要一个整数参数,而不是指向整数值的地址。因此,您需要确保FUNCTION PARAMETERS的数据类型必须与FUNCTION ARUMENTS的数据类型匹配。否则,在编译时总是会弹出这样的编译错误。
因此,在您的情况下,有以下解决方案来解决此问题:
- 将函数参数int x更改为int*x Or
- 将f(a,b(更改为f(*a,b
- 将a声明为一个简单整数,就像对b所做的那样。然后在调用f函数时,发送变量a的地址。请确保对于此选项,函数参数int x应更改为int*x
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度