0

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

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" 

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

4

1 回答 1

2

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

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

于 2013-07-01T15:29:24.533 回答