2012-02-29 40 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