【初心者歓迎】C/C++室 Ver.35【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0644デフォルトの名無しさん
2007/03/18(日) 23:56:17引数を反復子(ポインタ)にして
template<class Ran>
double average(const Ran& begin, const Ran& end){ (略) }
と定義したのですが、関数呼び出し部分で
double av_arr[] = {10, 20, 30, 10};
size_t av_arr_size = sizeof(av_arr) / sizeof(*av_arr);
double x = average(av_arr, av_arr + av_arr_size);
としたところ、
「テンプレート のパラメータ 'Ran' があいまいです。
'double *' の可能性があります。または 'double [4]'」
とコンパイラ(VC2005)にダメ出しされてしまいます。
average(av_arr + 0, av_arr + av_arr_size);
とすれば共にポインタとして認識してくれるようですが、
読んだ本には、「配列の名前を添え字なしで使うと配列の先頭のポインタが渡される」と書いていたので、
元のままだと何が悪いのかよくわかりません。
"double [4]"って何の型?? みたいな話もあるんですが、
解説とスマートな解決策をご教授願えれば幸いです。
■ このスレッドは過去ログ倉庫に格納されています