我有一个类定义为
class Edgelet
{
private:
const int e_size;
//Other private members...
public:
//The constructor
explicit Edgelet (int size, Color cl1 = Color::NA, Color cl2 = Color::NA);
//Other public members...
Run Code Online (Sandbox Code Playgroud)
由于类中有一个const成员,因此编译器隐式删除了默认的复制构造函数。需要给它一个参数来初始化。
问题出在课堂上
class Cube
{
private:
std::array <Edgelet, 12> c_edgelets;
//Other members...
public:
//The constructor
Cube(int size)
//Other public members...
Run Code Online (Sandbox Code Playgroud)
此类包含先前类对象的std::array。我如何初始化这个数组?所述尺寸参数需要被提供给的每个元素的std ::阵列初始化。我想将std::array 的每个元素设置为Edgelet(size - 2).
当然,我可以使用初始化列表,但由于构造函数有 12 个元素和其他参数,而不是显示,代码变得很难看。此外,我用 6 个元素而不是 12 个元素进行了类似的处理。
我还尝试为参数提供默认值,但由于有一个const成员,因此以后无法更改该值。我也尝试查看std::initializer_list但似乎您无法向其中添加新元素(或者您可以??)。有没有一种有效的方法来做到这一点?