0

我有以下结构:

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

我在这里监督什么?

4

2 回答 2

3

element是工会的名称,而不是 的成员的名称type1。你必须给出union element一个名字:

struct type1 {
struct type2 *node;
    union element {
        struct type3 *e;
        int val;
    } x;
};

然后你可以访问它:

struct type1 *f;
f->x.e
于 2012-10-23T19:42:38.223 回答
-1

如果 f 是一个指针,那么您可以使用 f->element 或 (*f).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;
于 2012-10-23T19:38:39.123 回答