函数重载c ++中的歧义

时间:2013-07-01 15:23:29

标签: c++ overloading

我有两个带有签名的函数,如下所示。

void overloading(int, int)

void overloading(int, A *ptr, int)

其中A是一个类。

当我在gcc 3.4中编译时。我的主要功能有以下调用。

A *pointer = new A();

overloading(10, pointer,20);

我收到错误消息

"Invalid conversion from A * to int" 

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

1 个答案:

答案 0 :(得分:2)

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

只需确保在主文件中包含所有必需的标题。