c++中的函数重载模糊性
function overloading ambiguity in c++
我有两个函数的签名如下。
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
)来证明这一点。
只需确保在主文件中包含所有需要的头文件即可。
相关文章:
- 带boost的过载模糊性:可选,解决方法
- C++ 重载分辨率和恒常性
- 如果不需要易失性,为什么 std::atomic 方法会提供易失性重载
- 将多态性与运算符 + 重载模板化类结合使用.如何实现基类?
- C++模板方法重载和具有多态性的类访问
- 运算符重载的隐式交换性
- 类X有多个默认构造函数和对重载函数的模糊调用
- C++ 中多态性和函数重载之间的区别
- 如何用复数和多态性重载运算符
- C++中的构造函数调用模糊性
- 运算符[]模糊性解析
- C++异常继承模糊性
- Visual Studio在添加if语句后显示C++模糊性错误
- 非成员函数中的隐式参数转换模糊性使用std::函数重载
- c++中的函数重载模糊性
- 静态多态性中的模糊性
- 涉及模板化转换操作符和隐式复制构造函数的模糊性
- 泛型类型初始化的模糊性
- 解决基模板类成员的模糊性
- 模板函数调用模糊性错误