尝试使用可变参数模板编写构造函数时,在获取使用它传递的变量的值时出现问题。如何才能做到这一点?提前致谢。
MyArray(const int size, const Values&... values) {
a = new T[size];
int counter = 0;
while (counter != size) {
a[counter++] = values;
}
}
尝试使用可变参数模板编写构造函数时,在获取使用它传递的变量的值时出现问题。如何才能做到这一点?提前致谢。
MyArray(const int size, const Values&... values) {
a = new T[size];
int counter = 0;
while (counter != size) {
a[counter++] = values;
}
}
一般来说,参数可以是不同的类型,因此只有在编译时知道第 i 个参数时,才能通过编号引用第 i 个参数:
std::get<i>(std::tie(values...))
.但是,如果您确定参数具有相同的类型,那么您可以将它们推入一个数组:(
T *array[] = {values...};
一个指针数组 - 以避免复制),然后像往常一样使用它。顺便说一句,您不需要将大小作为单独的参数传递。你可以像这样得到它:(
sizeof...(Values)
或者values
,没关系)。如果您不想将参数放入数组中,那么您也可以这样写:
这
((a[counter++] = values), ...);
就是所谓的fold-expression。它变成(values[counter++] = values_1), (values[counter++] = values_2), ... ;
.或另一种选择 - 通常在一行中: