【发布时间】:2020-02-08 06:54:23
【问题描述】:
我可以这样做:
struct foo{
foo(std::array<double, 3>){}
foo(std::array<double, 4>){}
}
我想这样做:
struct foo{
foo(double A[3]){}
foo(double A[4]){}
}
这当然行不通。
这涉及带有大量 3 和 4 元素双精度数组的遗留代码。我希望构造一个包含 3 个或 4 个元素数组的 4 个双精度的类,并在从 3 元素数组构造时用一个常量值初始化第 4 个双精度。当我从一个 4 元素数组初始化时,我只是复制了 4 个元素。
所以,我想让构造函数识别:
double something[3];
来自:
double something_else[4];
我能想到的最好的就是在构造函数中再添加一个参数来区分两者。
class foo{
foo(double A[4], bool only_3 = false){}
foo(double *A, size_t n = 4){}
}
有更好的想法吗?
(如果时间允许,我会排除所有原始数组,但现在我必须处理它。)
【问题讨论】:
标签: c++ arrays constructor