以下工作我使用GNU编译器。请注意,我用std :: tr1 :: array替换了原始数组。这个类在分配整个数组方面更灵活(而不仅仅是从文本初始化数组)。
#include <iostream>
#include <tr1/array>
using namespace std;
using namespace tr1;
typedef array<array<bool,4>,4> array4x4;
class SomeClass {
public:
array4x4 someArray;
SomeClass() : someArray((array4x4){{{{0,0,0,0}},{{0,0,0,0}}}}) {}
};
int main()
{
SomeClass super;
super.someArray=(array4x4){{{{1,1,1,0}},{{1,0,0,1}}}}; //Now works
for (int i=0;i<4;i++){
for (int j=0;j<4;j++){
cout<<super.someArray[i][j];
}
cout<<endl;
}
return 0;
}
但是,下面的方法是有点接近你开始的地方,并演示了一些在其他意见建议的东西...
#include <iostream>
#include <algorithm>
using namespace std;
class SomeClass {
public:
bool someArray[4][4];
SomeClass()
{
bool temp[4][4] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
for (int j=0; j<4; j++) for (int i=0; i<4; i++) someArray[j][i] = temp[j][i];
}
};
int main()
{
SomeClass super;
bool temp[4][4] = {{1,1,1,0},{1,0,0,1}}; // a local source of data
for (int j=0; j<4; j++) for (int i=0; i<4; i++) super.someArray[j][i] = temp[j][i];
for (int i=0;i<4;i++){
for (int j=0;j<4;j++){
cout<<super.someArray[i][j];
}
cout<<endl;
}
return 0;
}
通过“this goes red”,你是什么意思? –
嗯,我的意思是说,IDE(Qt Creator)指出了一个错误。当我尝试编译它说:从初始化程序列表分配给一个数组。 – user1723614
似乎有第二个错误(其他数组初始化)。如果你注释掉红线表示的代码,代码是否会编译并运行? – nobar