1

「あいまいさ」のためにコンパイルに問題があります。私は持っています:

#include <cmath>
#include <math.h>

float q;
setActivacion(1/(1+pow(M_E,-q)));

コンパイラーによると:ISO C ++は、最初の変換の最悪の変換が2番目の変換の最悪の変換よりも優れているにもかかわらず、これらはあいまいであると言っています。

double pow(double、double)float std :: pow(float、float)

pow()の引数に10進数の値を差し込んでみましたが、機能します。変数を取るのに問題があるようです。

前もって感謝します。

4

3 に答える 3

2

これは、C ++標準ライブラリにC標準ライブラリが組み込まれているためです。cmathがすべてのものを名前空間に配置するという事実を除けば、math.hとcmathは同一でなければなりませんstd::。したがって、両方を含めないでください。C++を使用している場合は、おそらく。#include <cmath> のみを使用する必要があります。

于 2012-09-15T10:10:02.687 に答える
1

エラー メッセージは、2 つの float または 2 つの double を渡す必要があることを示しています。double と float を渡しています。

試すpow(M_E, static_cast<double>(-q))

価値があるのは、g ++ (4.5.3) からこのエラーを取得できないことです。2 つのヘッダーのうちの 1 つだけを含めても (どちらに関係なく)、Comeau から同様のエラーが発生する可能性があります。

gcc の実装の詳細がある可能性があります。これは、一致するバージョンが 1 つしかないことを意味しpowます。また、ヘッダーの1つだけを含めるか、名前空間を指定することでpow、あいまいさも削除されるコンパイラである可能性があります。ただし、通常、実装の詳細に依存する修正に依存することはお勧めできません。

于 2012-09-15T10:32:13.450 に答える
0

あなたはおそらくusing namespace std;どこかにそこにいますね?また、必要なバージョン、つまりusing std::powまたはusing ::pow(メモリからの構文ですが、うまくいけばアイデアが得られる)を指定することもできます。

于 2012-09-15T10:10:17.217 に答える