假设我有一个简单的类:
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
类型,并且(某种方式)使用我传递的整数进行初始化。我应该如何解决这个问题?