中級 › error: call of overloaded '...' is ambiguous の原因と直し方 › パターン2
error: call of overloaded '...' is ambiguous の原因と直し方
同じ名前の関数が複数のオーバーロードを持ち、渡した引数の型からどちらを呼ぶべきかコンパイラが一意に決められないときに出るエラーです。
1 #include <iostream> 2 void report(long x) { std::cout << "long:" << x << std::endl; } 3 void report(unsigned long x) { std::cout << "unsigned long:" << x << std::endl; } 4 int main() { 5 report(____); ^ 6 return 0; 7 }
main.cpp:5:11: error: call of overloaded 'report(int)' is ambiguous
空欄を埋めてコンパイル・実行を通す
「型が近ければコンパイラがうまく選んでくれる」というのは誤解です。曖昧な場合はエラーとして人間の判断に委ねられます。
次の問題