首页 > 解决方案 > 提供的参数数量少于函数所需的函数调用是否可能?

问题描述

我正在制作一个函数,最多可以添加 4 个整数。如果我将 4 个 int 参数传递给函数并且函数将添加它们,一切都会正常工作。但是如果我传递的参数数量较少,编译器就会出错。所以我想问是否有任何可能的方法可以让函数的参数数量少于定义的数量,并且该函数仍然在给定的参数上执行它的任务?

例如(单个函数最多可以添加 4 个整数。但如果给定 3 个参数,它仍然会添加它们)Nromal/Max:

int a=5,b=6,c=7,d=8;
int sum (a,b,c,d);

更少的 arg:'''

int a=5,b=6,c=7;
int sum(a,b,c)

输出:正常/最大值 = 26 减去 arg = 18;PS:这里的 sum 函数是一个单一的函数,它输出给定的 int 参数的总和。

标签: c++

解决方案


在 C++17 中有一种简单的方法可以使用折叠表达式来做到这一点:

template<class... Args>
auto sum(Args... args) {
    return args + ... + 0;
}

您将能够使用任意数量的可添加参数来调用它(例如,您可以混合整数和浮点数)。被Args...称为模板参数包,并且args + ... + 0基本上扩展为firstarg + secondarg + ... + lastarg + 0(在您传递 0 个参数的情况下为零。)


推荐阅读