Почему в C++ нет прямого указания во время объявления структуры? У меня есть следующий код C, который не работает с компилятором C++:
static const struct {
struct structtype1 header;
struct {
struct structtype2 intf;
struct structtype3 src;
} foo1, foo2;
} bar = {
.header = {
.byte1 = 0x23,
.length = 12,
.count1 = 4,
.count2 = 4,
},
.foo1= {
.intf = {
.data = 0x23,
.len = 2,
.ep = 3,
},
.src= {
.data = 0x21,
.len = 4,
.ep = 2,
},
},
.foo2= {
.intf = {
.data = 0x17,
.len = 11,
.ep = 2,
},
.src= {
.data = 0x20,
.len = 2,
.ep = 1,
},
},
};
у вас есть два варианта:
1. Использовать конструкторы для этого
это определит значения для членов, но все структуры будут одинаковыми
struct _pnt { int x,y,z; _pnt() { x=0; y=0; z=0; } };
_pnt p0,p1,p2; // all points are initialized to (0,0,0)
2.use, как обычно, он все еще работает в любом компиляторе C++, который я использовал
Не забывайте, что порядок участников такой же, как в декларации !!!
struct _pnt { int x,y,z; };
_pnt p0={0.0,0.0,0.0},
p1={1.0,0.0,0.0},
p2={0.0,1.0,0.0};
проблема в том, что вы должны инициализировать всех участников не только некоторыми !!!