的初始化列表假设我有一个简单的类:初始化向量与INTS
class Pvector
{
private:
std::vector<long double> point_list;
public:
Pvector(std::initializer_list<long double> coords) : point_list(coords)
{}
Pvector(std::initializer_list<int> coords) : point_list(coords)
{}
};
这不能编译,因为模板上long double
型std::vector
本身不能从模板上int
类型的初始化列表初始化。这是相当不方便,但是,由于与第二构造去掉,我不能做我的代码如下:
Pvector piece_movement({E.X - S.X, E.Y - S.Y, E.Z - S.Z});
这是因为我的数学运算得到的类型是int
类型。所以我似乎陷入了一个难题。我希望能够将整数直接传递给Pvector
的构造函数,但我仍然希望point_list
的类型为long double
,并且(以某种方式)用我传入的整数初始化。我该如何去做这件事?
我知道这一点,但我仍然不确定在传递整型变量的情况下该怎么做。现在我想到了,我想我可以静态地将它们中的每一个都放大一倍,但这不一定是最理想的解决方案。 – JohnTravolski
@JohnTravolski,这不是很清楚。我不知道如何传递整数类型的变量是一个问题。 –
啊哈,你的第二个解决方案似乎已经纠正了这个问题。我现在能够使用非常量整数值和变量来初始化我的Pvector,即使没有第二个构造函数。 – JohnTravolski