我有以下结构:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
};
};
初始化指向*f
实例的指针type1
并执行以下操作时:
f.element->e
或者只是f.element
,我得到:
error: request for member ‘element’ in something not a structure or union
我在这里监督什么?
答案 0 :(得分:3)
element
是联合的名称,而不是type1
成员的名称。您必须提供union element
名称:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
} x;
};
然后你可以访问它:
struct type1 *f;
f->x.e
答案 1 :(得分:-1)
如果f是指针,那么您可以使用f->元素或(* f).element
访问“元素”更新:刚看到“element”是联合名称,而不是结构的成员。 你可以尝试
union element {
struct type3 *e;
int val;
} element;
所以最终的结构将是这样的:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
} element;
};
现在你可以通过type1 * f:
访问这样的元素成员struct type1 *f;
// assign f somewhere
f->element.val;