私人部件I具有例如以下代碼:初始化的std ::陣列通過構造
#include <iostream>
#include <array>
class Base {
public:
Base() : mA(std::array<int,2>()) {}
Base(std::array<int,2> arr) : mA(arr) {}
Base(/* what to write here ??? */);
private:
std::array<int,2> mA;
};
int main()
{
std::array<int,2> a = {423, 12}; // Works fine
Base b(a); // Works fine
Base c({10, 20}); // This is what I need.
return 0;
}
如何應該定義構造以允許初始化與內部「主」上面的第三行所示?一般來說,我需要一個可配置的(在編譯/運行時間的長度)結構,它允許使用數字列表(如{1,2,3}或(1,2,3)或類似的東西)進行初始化,而不需要元素 - 按元素複製。爲了簡單起見,我選擇了std :: array,但是恐怕它可能不適用於這種初始化。你會推薦什麼容器?
感謝, 克斯特亞
我不認爲這是可能與使用'{'和'}'因爲這種類型的初始化它是一個語言特性而不是函數或其他東西,所以你不能「模擬」它 – SingerOfTheFall
有趣的是,'Base c({10,20});'與GCC 4.8(不適用於4.7)和Clang 3.4一起工作。 – Ricky65