c++中的函数重载模糊性

function overloading ambiguity in c++

本文关键字:重载 模糊性 函数 c++      更新时间:2023-10-16

我有两个函数的签名如下。

void overloading(int, int)

void overloading(int, A *ptr, int)

其中A是一个类。

当我在gcc3.4。我的主要功能有以下调用。

A *pointer = new A();
overloading(10, pointer,20);

我收到一个错误,上面写着

"Invalid conversion from A * to int" 

是我做错了什么,还是编译器无法识别正确的重载函数?

您的问题是,在可能调用overloading的位置,您没有声明函数的三参数版本,因此编译器只能看到(int, int)版本。您甚至可以通过预处理源文件(例如g++ -E)来证明这一点。

只需确保在主文件中包含所有需要的头文件即可。