c++从int*到int的转换无效

c++ invalid conversion from int* to int

本文关键字:int 转换 无效 c++      更新时间:2023-10-16

我有以下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的数据类型匹配。否则,在编译时总是会弹出这样的编译错误。

因此,在您的情况下,有以下解决方案来解决此问题:

  1. 将函数参数int x更改为int*x Or
  2. 将f(a,b(更改为f(*a,b
  3. 将a声明为一个简单整数,就像对b所做的那样。然后在调用f函数时,发送变量a的地址。请确保对于此选项,函数参数int x应更改为int*x