MSDN中的例子:
int average( int first, ... )
{
int count = 0, sum = 0, i = first;
va_list er; va_start( er, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( er, int);
}
va_end( er ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
它有一个缺陷,就是最少也要传递一个参数,我要实现当没有参数的时候也能成功运行,应该如何实现?除了重载一个无参数的同名函数外还有没有别的方法?
int average( int first, ... )
{
int count = 0, sum = 0, i = first;
va_list er; va_start( er, first ); /* Initialize variable arguments. */
while( i != -1 )
{
sum += i;
count++;
i = va_arg( er, int);
}
va_end( er ); /* Reset variable arguments. */
return( sum ? (sum / count) : 0 );
}
它有一个缺陷,就是最少也要传递一个参数,我要实现当没有参数的时候也能成功运行,应该如何实现?除了重载一个无参数的同名函数外还有没有别的方法?
解决方案 »
- 如何在dll中用std::vector<int>做参数,返回数据(急)
- SQL SERVER
- 程序无法通过防火墙
- 关于MFC ODBC中CRecordSet的问题
- 我用TabCtrl_InsertItem在某选项卡插入的标题文字如何动态获得?
- 高手请进,现本人是菜鸟一只,对于视图类客户区的无效区的操作
- VC++怎么生成应用程序?
- 怎样才能在颜色对话框中获得更多的其他信息,譬如亮度,饱和度色调
- 大虾帮忙看一个出错信息,ok?
- 请问怎么判断电脑上有无安装realplay播放器?------------非常感谢
- 要在qq聊天时点发送后得到聊天内容,用什么hook好?
- 请问怎样比较两个 char* 的内容相不相同
int average( int first, int a = 0 );
int average( int * first, ... )
{
// 如果first == NULL , 说明无参数.
....
}调用时给NULL,如: average(NULL);
不就可以了吗!
int average( int first=0, ... )
这是最基本的用法啊!