【发布时间】:2018-02-03 03:01:48
【问题描述】:
假设我有一个简单的类:
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 并且(以某种方式)用我传入的整数进行初始化。我该怎么做关于这样做?
【问题讨论】:
标签: c++ list vector initialization