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;