C++の場合も調べてみた
まず前提条件として
#include <stdarg.h>
か
#include <cstdarg>
をしておく
以下引数中の中の最大値を返す関数
double max(int num, ...){ va_list args; double ival; va_start(args, num); double result = -DBL_MAX; for(int i=0; i<num; i++){ ival = va_arg(args, double); if(result < ival){ result = ival; } } va_end(args); return result; }
まずJavaと違う点として、第一引数は明示しなければいけない
この例だとint numの部分がそれ
可変引数の数をとれない?のか難しいらしいので、第一引数に引数の数を入れるのが普通らしい
可変引数の型は引数中に無いですね
ival = va_arg(args, double);
という行のdoubleの部分でdoubleだと決まります。
int 型のmax関数を作りたければ、
ival = va_arg(args, int);
にしてやればいいわけです
va_listとかva_startとかva_endとかはテンプレでOK
0 件のコメント:
コメントを投稿