class A {};

class B{
private:
   size_t arraySize;
   unique_ptr<array<A, arraySize>> upArrayA;

public:
    B(size_t tArraySize)
      : arraySize(tArraySize), upArrayA(make_unique<array<A,arraySize>>())
    {}
};

B b(3);    //would like to set array size here


上面的代码不起作用,因为arraySize不是静态常量。

我知道数组需要大小的编译时知识,但是普通C数组也是如此。但是,对于C数组,您可以使用动态语法来绕过此要求。

有什么我可以在对象实例化时设置数组大小的忍者魔术方法吗?

最佳答案

根据大小模板类:

template <std::size_t arraySize>
class B {
private:
   unique_ptr<std::array<A, arraySize>> upArrayA;

public:
    B() : upArrayA(std::make_unique<>()) {}
};




用法如下:

B<3> b;

关于c++ - 在类包装实例化时设置的std::array大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49226794/

10-11 21:53