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

标签 c++ oop

我有以下 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);

关于C++ 从 int* 到 int 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39064568/

相关文章:

c++ - 分配器作为 vector 和列表中的默认参数

c++ - 为什么找不到这个算法?

c++ - 如何使用 C++ 从 .exe 读取/写入 asm 寄存器?

java - 将父类(super class)传递到需要子类的方法中

objective-c - 处理类似方法的设计模式

c++ - 用Visual C++编程串口arduino

c++ - 项目的 Makefile

java - OpenGL 在面向对象模型中将 glVertexAttribPointer 放在哪里?

java - 为什么在面向对象的编程中,要在变量中实例化对象的父类(super class)和子类?

class - 如何在没有 initstate 的情况下使用异步值初始化 dart 类的私有(private)属性?