繁体   English   中英

c++ 使用构造函数参数在初始化列表中初始化 std::array of std::arrays

[英]c++ initialize std::array of std::arrays in the initializer list using constructor parameters

我有一个这样的构造函数:

class MyClass {
  protected:
    std::size_t size1;
    std::size_t size2;
    std::array<std::array<std::pair<std::uint64_t, std::uint64_t>>> items;
  public:
    MyClass(): MyClass(1, 1, <???>) {}
    MyClass(std::size_t size1, std::size_t size2): size1(size1), size2(size2), <???> {}
};

我不确定上面的部分是否可以完成:根据size1和size2提供的大小将arrays对的数组初始化为全0。 我用谷歌搜索了一下,但似乎无法找到这方面的代码示例。 任何帮助,将不胜感激。

正如 Yksisarvinen 提到的, std::array需要在编译时知道它的大小。 如果需要在运行时设置大小,请改用std::vector 但是,如果您在编译时确实知道大小,则使MyClass成为模板并将所需的大小作为模板参数传递:

template<std::size_t size1 = 1, std::size_t size2 = 1> {
protected:
    std::array<std::array<..., size2>, size1> items{};
public:
    MyClass() = default;
    ...
};

请注意, items声明后的{}确保所有值都设置为零。 然后你可以像这样实例化它:

MyClass<3, 5> myObject;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM