为什么在 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.照常使用定义,它仍然可以在我使用的任何 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};
问题是你必须初始化所有成员,而不仅仅是一些成员!!!
关于c++ - 将具有结构初始化和赋值的 C 代码移至 C++ 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328535/