私の会社には、かなり大きなコードベースを備えたソフトウェアがあります。最近、gcc 4.1.2を使用してx86_64ターゲットでコンパイルするコードをチェックするタスクが割り当てられました。私はコードの非常に小さな変更を加えてコンパイルするのはかなり遠いですが、今朝ちょっと混乱したコンパイルエラーがありました。コンパイラエラー:pow(...)への不一致の呼び出し
コードでは、pow
を<cmath>
から呼び出すと、int, unsigned int&
をパラメータとして使用しています。コンパイラは、適切な一致を見つけることができないため、エラーを吐き出します。次のように<cmath>
でpow
ためのオーバーロードは、以下のとおりです。
double pow(double base, double exponent)
long double pow(long double base, long double exponent)
float pow(float base, float exponent)
double pow(double base, int exponent)
long double pow(long double base, int exponent)
私は、これは私たちの32ビット環境上に構築が、それが今のポイントの横だ理由としてはかなりSHUREありませんよ。
私の質問は:どのように私はpow
を使うべきですか?ありがとう。
P.S.私はパラメータのデータ型を変更することはできません。私の任務は、コンパイルするコードを取得し、私が行ったハッキングについて詳述することです。後でそのハックを調べ、適切な方法でそれらを処理することができます。
おそらく、正確なコンパイルエラーを追加できますか?そして、違反行? – xtofl
あなたは 'unsigned int&'をintまたはfloatにキャストできませんか?試してみてください(a、(float)b) – fazo