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を使用して「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 に答える