因此,讓我們假設我有下面的類類具有的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