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 中