【发布时间】:2017-08-25 13:52:56
【问题描述】:
假设我有一个类旨在表示任何维度的典型数学向量。我想设计这个类,使其构造函数接受任意数量的参数,将这些参数转换为 long double 类型,然后按照参数列表中提供的相同顺序将它们插入“point_list”向量中。
class Pvector
{
private:
std::vector<long double> point_list;
public:
// some magic constructor here
};
现在,如果所有参数都属于同一类型,这不会很困难,因为我可以使用初始化列表。但问题是任何参数都可能是不同的类型,这仍然需要接受任意数量的参数(至少一个)。本质上,我试图能够像这样使用构造函数:
int i;
float j;
double k;
long double l;
Pvector vec1(i, j, k, l);
Pvector vec2(k-i, 5, j);
Pvector vec3(i, i, j, j, k, k, l, l);
etc...
我只是不确定是否有可能有一个可变参数构造函数接受多种类型,然后在将它们插入向量之前隐式地将它们转换为长双精度数。是否有可能实现这一点,或者如果我想要一个可变参数构造函数,我的所有参数都必须是相同的类型吗?
【问题讨论】:
-
您是否考虑过在构造函数中使用
std::vector<long double>并让std::vector处理它?你必须使用Pvector vec1({i, j, k, l});。 -
我不知道是否可以将parameter packs 与构造函数一起使用,但它可能值得一试。
-
我不明白是什么问题。 Just do it,不用乱用可变参数模板
-
另外,我认为它是相关的to this question?
标签: c++ vector initialization variadic