我需要从最小的一个传递到函数的最多七个文件路径。有一个约定,其中仅文件路径足以标识如何处理每个文件。
参数的顺序无关紧要。
解决此问题(我当前实现的)的一个显而易见的选择是传递一个空字符串作为未使用插槽的参数。
另一个是将参数作为数组或向量传递。
还有一种方法是实现所有可能的参数排列(可能,不实际)。
我想知道是否有一种方法可以简单地指定参数的数量可以变化,然后直接传递参数本身。
因此,例如,假设只有f()的一种实现具有特殊语法来表示不同数量的参数
以下所有内容均应编译:
int main()
{
f(file);
f(file1, file2);
f(file1, file3, file2, file6);
}
有没有办法在C ++中实现这一目标?
您可以使用递归模板函数。
#include <iostream>
template <typename First>
void f(First&& first) {
std::cout << first << std::endl;
}
template <typename First, typename... Rest>
void f(First&& first, Rest&&... rest) {
f(std::forward<First>(first));
f(std::forward<Rest>(rest)...);
}
int main() {
f(6,7,8,9,10);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句