暂时考虑过这些问题但是却无法想出如何做到这一点。
让我说我的功能如下:
double sum( int param1 , double param2 , [ optional... ] )
{
return param1 + param2;
}
现在我想要
Q1:可选参数
Q2:无限量的可选参数,无需全部声明它们。
问题3:在这些可选参数中使用int和double值
提前致谢:)
答案 0 :(得分:2)
如果您熟悉c++11,则会引入一个名为variadic templates的新概念;从本质上讲,它可以让你创造出你所提到的功能,这可以带来各种各样的争论。
声明此类函数的语法如下:
template <typename ... Types>
void someFunc(Types ...args) {}
另一种选择是使用std::initializer_list和std::accumulate来实现此目的,因为您已经知道将要使用的变量类型。使用您的程序的一个例子是:
#include <iostream>
#include <initializer_list>
#include <numeric>
using namespace std;
double sum( initializer_list<double> vals ) {
return accumulate(vals.begin(), vals.end(), 0.0);
}
int main() {
// your code goes here
cout << sum({2, 3, 4.6, 5, 6, 74.322, 1}) << endl;
return 0;
}
答案 1 :(得分:0)
您想使用Variadic function。
这里显示的一个例子很容易理解,它将计算任意数量的参数的平均值。请注意,该函数不知道参数的数量或类型。
#include <stdarg.h>
double average(int count, ...)
{
va_list ap;
int j;
double tot = 0;
va_start(ap, count); /* Requires the last fixed parameter (to get the address) */
for(j = 0; j < count; j++)
tot += va_arg(ap, double); /* Increments ap to the next argument. */
va_end(ap);
return tot / count;
}