中級 › error: call of overloaded '...' is ambiguous の原因と直し方 › パターン1
error: call of overloaded '...' is ambiguous の原因と直し方
同じ名前の関数が複数のオーバーロードを持ち、渡した引数の型からどちらを呼ぶべきかコンパイラが一意に決められないときに出るエラーです。
1 #include <iostream> 2 void show(long x) { std::cout << "long:" << x << std::endl; } 3 void show(unsigned long x) { std::cout << "unsigned long:" << x << std::endl; } 4 int main() { 5 show(___); ^ 6 return 0; 7 }
main.cpp:5:9: error: call of overloaded 'show(int)' is ambiguous
空欄を埋めてコンパイル・実行を通す
int型の5をlongに変換するかunsigned longに変換するかは同じ変換ランクで並んでしまい、コンパイラはどちらか一方を優先できません。リテラルにLを付けて型を明示します。
次の問題