我想创建一个可用于存储3D坐标或线性方程的结构。 这是代码:
struct myStruct {
union {
// coordinates (3d)
struct {
int x,y,z;
};
// linear equation (ax+b)
struct {
int a,b,x;
};
};
};
我收到以下错误:
error: redeclaration of ‘int myStruct::<anonymous union>::<anonymous struct>::x’
我在linux mint 18.04,g ++(5.4.0),使用--std = c ++ 11进行编译。
我理解这个问题。但是几乎没有问题。
答案 0 :(得分:1)
给他们起名字。这应该没问题:
struct myStruct {
union {
struct coordinates { int x,y,z; };
struct linear_equation { int a,b,x; };
coordinates coord;
linear_equation lin_eq;
};
};
我也允许自己在工会中添加一些成员。但是,这两个结构具有相同类型和数量的成员,因此使用联盟的麻烦是值得怀疑的。
答案 1 :(得分:1)
只是为了补充user463035818的答案。您可以通过直接声明成员来简化您的联合,例如:
struct myStruct {
union {
// coordinates (3d)
struct {
int x,y,z;
} coord;
// linear equation (ax+b)
struct {
int a,b,x;
} lin_eq;
};
};