1. ホーム
  2. c++

[解決済み] C++コンパイラーエラー:オーバーロードされた関数へのあいまいな呼び出し

2022-02-12 03:06:29

質問

string aux;
int maxy,auxx=0;

cin>>aux;

maxy= (int)sqrt(aux.size());

得ることができました。

1> error C2668: 'sqrt' : ambiguous call to overloaded function
1>        could be 'long double sqrt(long double)'
1>        or       'float sqrt(float)'
1>        or       'double sqrt(double)'

なぜ?

解決方法は?

string::size() リターン size_tsqrt は、どのバージョンでも受け付けません。つまり、コンパイラはキャストをしなければならず、何をするかは選べないのです。明示的にキャストしなければならないのです。

maxy = (int)sqrt((double)aux.size());