我有两个带有签名的函数,如下所示。
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"
我做错了什么或者编译器无法识别正确的重载函数?
答案 0 :(得分:2)
您的问题是,在您可能调用overloading
的位置,您尚未声明函数的三个参数版本,因此编译器只能看到(int, int)
版本。您甚至可以通过预处理源文件来证明这一点(例如g++ -E
)。
只需确保在主文件中包含所有必需的标题。