title=重载函数 FUNCTION_NAME 调用不明确
外观
例如,一个名为“foo”的函数在 main 函数内部被调用,但其参数与当前存在的任何“foo”函数实现不完全匹配。
void foo(int x);
void foo(double x);
int main () {
long x = 5000;
foo(x);
...
解决方案 1: 将参数强制转换为与某个声明匹配
int main () {
long x = 5000;
foo((int)x);
解决方案 2: 创建一个新的重载版本,使其与调用函数的参数匹配
void foo(int x);
void foo(double x);
void foo(long x);
int main () {
long x = 5000;
foo(x);
解决方案 1: 检查是否有拼写错误或重复的函数定义/声明
解决方案 2: 确保没有使用标准库中定义的函数名称
template <typename T>
void swap(T &a, T &b) { // error, "swap" is defined by the C++ standard library
T tmp = a;
a = b;
b = tmp;
}
// Possible Fix
template <typename T>
void Swap(T &a, T &b) { // Capitalized the first letter
T tmp = a;
a = b;
b = tmp;
}
- 此消息出现在 GCC 版本 3.2.3、4.5.1 中