2011-10-25 8 views
0

ans+= c[i] * pow(x,i);を呼び出すと、xCodeは「関数呼び出しの引数が多すぎます。予想される1は2です」と不平を言っています。次のように私は、ローカルに定義された機能を持っている:cmathのpow関数を指定し、ローカルでは宣言されていない

Polynomial pow(unsigned int n) const; 

とコンストラクタ:

Polynomial(const double t = 0.0); 

どのように私はcmathの捕虜機能ではなく、ローカルに定義されたものを使用したいことを指定することができますか?

ありがとうございました! (その全体存在意義名前空間のだったので、あなたがいないのであれば、あなたはであるべき、と)

答えて

5

さて、あなたはstd名前空間のうち、すべてあなた自身のものを維持していると仮定すると、 std::pow()を使用することができます。

は、例えば、次のコードを参照してください:

#include <iostream> 
#include <cmath> 
int pow(int x, int y) { return -1; } 
int main() { 
    std::cout << std::pow(3,2) << std::endl; 
    return 0; 
} 
+0

これは失敗します。 XCodeによると、stdにはpowという名前のメンバーはありません。 – joshim5

+2

XCodeが壊れているか、 'cmath'の代わりに' math.h'が含まれています。 – paxdiablo

0

私は、通常のオーバーロード機能するので、あなたは、クラスのメンバーを意味する「ローカルに定義された」ことでは違いを見分けることができるだろうと仮定するつもりです2つの機能の間。クラスメンバは、グローバルスコープで同様の名前の関数を非表示にします。

ローカルで定義された機能の名前を変更できない場合は、::powを使用してください。

関連する問題