struct A
{
int member1;
int member2;
struct B
{
int member3;
int member4;
} *b;
};
如何初始化 A
并同时创建一个 B
数组来填充 b
字段?我想要一个静态变量,所以最好是函数调用。
我试过这个但它不起作用(我认为它不会):
static A a = {
1,
2,
& { {3, 4}, {5, 6} },
}
最佳答案
我认为这段代码的问题在于这一行:
& { {3, 4}, {5, 6} }
问题是 {{3, 4}, {5, 6}}
是一个右值(一个值,而不是一个对象),你不能获取右值的地址。毕竟,这个对象的内存从何而来?但是,您可以将其重写为
A::B elems[2] = {{3, 4}, {5, 6}};
static A a = {
1,
2,
elems
};
从现在开始,您就有了一个可以指向的左值。
关于c++ - 初始化未命名的结构指针/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687041/