11

使用すると上記のエラーが発生します

double x = log10(100);

同じプロジェクトの他のクラスで使用しましたが、このエラーは表示されません。

どうすれば修正できますか?

どうもありがとう

ちんたん

4

1 に答える 1

20

このエラーは通常、関数に複数のオーバーロードがあり、その特定の呼び出しに対して他のオーバーロードより優れlog10ているものがないことを示しています。たとえば、オーバーロードは取ることができ、:はいずれかに変換でき、変換は同等であるため、コンパイラは最適なオプションを判断できません。floatdouble100int

オーバーロードの 1 つへの変換を明示的に強制することができます。

double x = log10( 100. );    // 100. is a double
float  y = log10( 100f );    // 100f is a float
int i = 100;
double z = log10( static_cast<double>(i) ); // or cast
于 2012-10-22T12:26:15.323 に答える