我有:
( 1) NetBeans 7.3 2) Digia v4.8.4的Qt。3) MinGW编译器。
你能帮我初始化我的数组吗?不幸的是,我失败了。我知道我必须使用initializer_list。但是,在我的文件中包含了什么,以及如何组织一切,对我来说都是个谜。
你能帮我一下吗?
图h
#include <initializer_list>
class Figure: public QObject{
Q_OBJECT
private:
int shape[4][4][4];Figure.cpp
Figure:: Figure(){
std::initializer_list<int> init;
auto init = std::initializer_list<int>
(
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}
,
{0, 0, 0, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
,
{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
,
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
}
); 发布于 2013-05-06 20:40:35
您不需要创建一个initializer_list,特别是因为您将尝试将它分配给您的数组,而不是从它初始化您的数组--这是非法的。相反,可以在构造函数的初始化列表中直接初始化数组,如下所示:
Figure::Figure()
: shape
{
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
}
}
{
// Body of the constructor...
};注意,在C++11中,还可以为数组提供内联初始化器,如下所示:
class Figure: public QObject {
Figure();
private:
int shape[4][4][4] {
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}
}
};
};
Figure::Figure() {
// Body of the constructor...
}发布于 2013-05-06 20:38:30
...
private:
int shape[4][4][4] {
{{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}}
};
...在您的特定情况下,您甚至不需要显式地使用initalizer_list,因为静态数组可以在定义的位置进行初始化,这是通过上面示例中的语法完成的(需要遵循C++11 )。
在构造函数初始化列表中初始化shape也是可能的:
...
Figure::Figure(): shape {
{{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}}
,
{{0, 0, 0, 0},
{0, 1, 1, 0},
{0, 1, 0, 0},
{0, 0, 0, 0}}
} {
...
}
...注意:注意到在您的尝试中遗漏了额外的括号。
https://stackoverflow.com/questions/16406802
复制相似问题