プログラミングの館のボムを打ってみようという所をやっているのですが、
c:\documents and settings\aps\デスクトップ\project\1章ver2.1\mydat\source\effect.cpp(27) : error C2668: 'cos' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
c:\program files\microsoft visual studio 9.0\vc\include\math.h(551): 'long double cos(long double)' の可能性があります。
c:\program files\microsoft visual studio 9.0\vc\include\math.h(503): または 'float cos(float)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(116): または 'double cos(double)'
引数リスト '(int)' を一致させようとしているとき
というエラーが出るのですが、これはどういう事を意味しているのでしょうか?
エラーに詳しい方お願いします。
オーバーロード関数とは何?
Re:オーバーロード関数とは何?
>これはどういう事を意味しているのでしょうか
C++のオーバーロード関数絡みのエラーですね。
C++ - オーバーロード
ttp://www.booran.com/menu/cplus/overload.html
コンパイラとしては cos(float)と cos(double)と cos(long double)の
3つの別々の関数の存在を認識しているけどユーザーが書いたコードから
そのどれを呼び出せばいいのか判らない状態にあります。
多分、こんな感じで書いていませんか?
[color=#d0d0ff" face="monospace]
int v = 1;
cos(v);
[/color]
とか
[color=#d0d0ff" face="monospace]
cos(1)
[/color]
とか。
こういう場合、明示的に floatとか doubleか、long doubleにキャストするか、
定数なら .f .0を付けたりして引数となる型を明確にしてあげて下さい。
[color=#d0d0ff" face="monospace]
cos((double)v);
cos(1.f)
cos(5.0)
[/color]
あるいは float版でよければ cosf関数を、long doubleなら cosl関数を
使ってもいいですね。