繁体   English   中英

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 这导致函数f被两个整数调用。

cout<<f(*a,b);

请告诉我们您想实现什么目标?

您需要使用*运算符从'a'指针获取值。

f(*a,b) //this invocation should work.

不管该代码编译没有错误,它都是丑陋的

int f(int x, int y)
{
    return x-y;
}

在上述函数中,第一个参数需要一个整数参数,而不是指向整数值的地址。 因此,您需要确保功能参数的数据类型必须与功能参数的数据类型匹配。 否则,此类编译错误将始终在编译时弹出。

因此,根据您的情况,有以下解决方案:

  1. 将函数参数int x更改为int * x或
  2. 将您的f(a,b)更改为f(* a,b),以便发送a的值而不是地址Or
  3. 像对待b一样将a声明为简单整数。 然后在调用f函数时,发送变量a的地址。 确保使用此选项,将函数参数int x更改为int * x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM