std :: array大括号如何初始化?

时间:2019-11-20 14:31:22

标签: c++ arrays list-initialization

由于数组没有构造函数或析构函数,也没有公共的非静态成员变量,数组如何允许花括号初始化?不允许尝试初始化以下类型:

class Test{
 var choices = [
    ["ABC", "AAB", "ACD"],           // 1st qns has 3 choices
    ["AND", "CQA", "QWE", "QAL"],    // 2nd qns has 4 choices
    ["ASD", "JUS", "JSB"]            // 3rd qns has 3 choices
  ];
}

我该如何以一种可以初始化的方式编写这种类型,而无需任何构造函数或析构函数来保持该类型易于构造和破坏,并且不暴露私有数组成员?

1 个答案:

答案 0 :(得分:5)

{em>隐式声明了std::array的构造函数。

假设std::array被定义为

template<
    class T,
    std::size_t N
> struct array;

它仅包含一个具有T[N]访问权限的成员public

因此,可以通过编写用于聚合初始化的适当语法(即使用花括号)来初始化std::array

相关问题