![](/img/trans.png)
[英]How to list-initialize a const std::array member using a std::array constructor argument C++
[英]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.