struct abc {
double matrix[2][2];
};
int main(){
abc test;
test.matrix[2][2]={0,0,0,0};
}
我构造了一个名为abc的结构,并且2 * 2矩阵是它的成员。但是如何在main函数中初始化矩阵?上面的代码总是出错...如何解决?
答案 0 :(得分:0)
gcc 4.5.3:g ++ -std = c ++ 0x -Wall -Wextra struct-init.cpp
struct abc {
double matrix[2][2];
};
int main(){
abc test;
test.matrix = {{0.0,0.0},{0.0,0.0}};
}
或者简单是最好的:
struct abc {
double matrix[2][2];
abc() {
matrix[0][0] = 0.0; matrix[0][1] = 0.0;
matrix[1][0] = 0.0; matrix[1][1] = 0.0; }
};
int main(){
abc test;
}
答案 1 :(得分:0)
你可以写:
struct abc
{
int foo;
double matrix[2][2];
};
void f()
{
abc test =
{
0, // int foo;
{0,0,0,0} // double matrix[2][2];
};
}
我已添加foo
,以清楚了解数组周围附加{}
的原因。
请注意,这种结构初始化只能与aggregate data type
一起使用,它大致意味着C-link结构。
如果你真的需要构建然后分配,你可能需要做类似的事情:
struct Matrix
{
double matrix[2][2];
};
struct abc2
{
int foo;
Matrix m;
};
void g()
{
abc2 test;
Matrix init = { 5,6,7,8};
test.m = init;
}