ページ 11

オーバーロード関数

Posted: 2011年1月13日(木) 02:26
by beginner
Microsoft Visual C++2010 Expressを使っているのですが、sqrt関数を使おうとすると以下のようなエラーが発生してしまいます。
error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。
どのようにすればよいですか。

Re: オーバーロード関数

Posted: 2011年1月13日(木) 02:29
by Dixq (管理人)
渡している型がおかしいのでしょう。
何の型を渡していますか?
また、エラーメッセージはググると大抵解決しますよ。
http://www.google.co.jp/search?hl=ja&so ... C%E7%B4%A2

Re: オーバーロード関数

Posted: 2011年1月13日(木) 03:32
by beginner
>>Dixq(管理人)さん
リンク先にとんでみたところ無事に解決できました。
ありがとうございます。

Re: オーバーロード関数

Posted: 2011年1月13日(木) 09:40
by toyo
C++ではオーバーロード関数といって同じ関数名でも引数の数や型が違う複数の関数が定義できます
質問のsqrt関数にもC++では3個の型が用意されています
double sqrt( double )
float sqrt( float)
long double sqrt( long double )
引数にこれら以外の型を渡すとコンパイラがどの関数を使えばいいのかわからないためエラーになります
C++でオーバーロード関数を使うときは引数の型に気をつけましょう

Cではdouble sqrt( double )しかないので引数は自動的にdoubleに変換されます
float sqrtf( float )という関数もあります