因此,让我们假设我有下面的类类具有的std ::对象的数组,但没有默认构造函数
class NoDefaultConstructor {
NoDefaultConstructor() = delete;
...
};
而且我有一个具有NoDefaultConstructor
类型的数组和其他成员的其他类
class Wrapper {
std::array<NoDefaultConstructor, 2> arr;
...
};
如何初始化构造函数中的数组Wrapper
(可能在初始化程序列表中使用std::intializer_list
)?
更具体地说,是我可以将参数传递给初始化程序列表中的数组构造函数的唯一方法,使Wrapper
具有类似于以下的构造?我正在考虑这样做,因为阵列的大小可能会在未来发生变化。
template <typename... Values>
Wrapper(Values&&... values) : arr{std::forward<Values>(values)...} {}
你可以存储'的std ::的unique_ptr'数组,而不是只'NoDefaultConstructor'的实例。 –
ArchbishopOfBanterbury
我探讨了这个想法,但我不想使用它,因为我宁愿在这种情况下使用'std :: vector' – Curious
搜索有关如何在不使用默认构造函数的情况下初始化数据成员的问题。 SO上有很多。 – juanchopanza