C++中函数参数的可变数量
Variable amount of function arguments in C++
所以,在C语言中,标准方法是stdarg.h。但是我想拉出一些类似的东西:
template<int A>
class MyClass {
public:
MyClass(...) {
// fill each value of array with an argument.
};
virtual ~MyClass() { };
private:
float array[A];
};
显然,这个想法不是为每个可能的参数量都有不同的结构。有什么建议,标准方法,什么?
谢谢
朱利安。
在 C++11 中,您可以使用 std::initializer_list 构造函数来实现这种情况。这允许这种类型的初始化:
MyClass<5> x{1,2,3,4,5};
尽管您必须定义尺寸不匹配时会发生什么。但是对于这些静态大小的数组,值得一看 std::array。当初始值设定项的维度与自己的维度不匹配时,它们具有明确定义的行为。
你需要使用initializer_list
explicit MyClass(std::initializer_list<T> list_args){
// fill each value of array with an argument.
};
如果您无法访问 C++11 initializer_lists,您可以只传递一个向量。
MyClass(const std::vector& values) {
//copy values into array
};
MyClass someClass( std::vector<int>(10,4) ); //adds 10x 4 to the vector
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 当从函数参数中的临时值调用复制构造函数时
- 如何从"decltype()"获取函数参数的数量<funtion>?
- 如何将lambda作为模板类的成员函数参数
- 模板参数推导失败,函数参数/参数不匹配
- 如何在C++中将迭代器作为函数参数传递
- 将函数参数"const char*"转换为"std::string_view"是
- C++ 如何将数组值解压缩为函数参数
- 主函数参数的属性
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 如何定义在用作函数参数时工作的类模板的转换
- 将函数参数完美转发到函数指针:按值传递呢?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 接受模板作为函数参数
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- Arduino 函数参数