L'utilisation d'union à l'intérieur d'une classe

J'ai vu un peu de code comme suit:

class A 
{
private:
    union {
        B *rep;
        A *next;
    }; //no variables of this anonymous defined!

    void func()
    {
        A *p = new A;

        p->next = NULL; //why p has a member variable of 'next'?
    }
};

J'ai compilé le code ci-dessus avec VS2010 sans aucune erreur.
Là est la question,

pourquoi p est une variable membre "suivant"?

    union {
        B *rep;
        A *next;
    };

Pour autant que je sais, c'est un anonyme de l'union, sans même la définition d'une variable. Comment pouvons-nous accéder aux variables membres à l'intérieur de cette union comme ça?

InformationsquelleAutor q0987 | 2011-03-27