2012-02-29 61 views

回答

13

嘗試添加多一個對{},以確保我們初始化內部C數組。

std::array<std::array<int, 2>, 2> shape = {{ {1, 1}, 
              {1, 1} }}; 

或者只是放下所有的括號。

std::array<std::array<int, 2>, 2> shape = { 1, 1, 
              1, 1 }; 
+0

它總是覺得我們必須這樣做纔是抽象的泄漏。只是因爲圖書館不是「內在」的語言,而是建立了它,我想。 – 2012-03-08 13:30:51

+1

剛剛嘗試過,如果你不需要警告,'std :: array ,2> shape = {{{1,1}},{{1,1}}}};'。 EWW – Jeff 2012-09-29 03:37:47

6

我建議(甚至沒有試圖擁有它,所以我可能是錯的)

typedef std::array<int, 2> row; 
std::array<row,2> shape = { row {1,1}, row {1,1} }; 
+1

它的工作原理,但我想知道爲什麼我的版本不。這兩種表情看起來都相同。 – 2012-02-29 19:25:14

+0

@zoopp:不,他們沒有。巴西爾使用明確的結構,而你不這樣做。 – 2012-03-08 13:30:35

+0

我明白了......感謝您的澄清。 – 2012-03-13 18:56:10