Я видел код следующим образом:
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'?
}
};
Я скомпилировал вышеуказанный код с VS2010 без каких-либо ошибок. Вот вопрос:
почему p имеет переменную-член 'next'?
union {
B *rep;
A *next;
};
Насколько я знаю, это анонимный союз, даже не определяющий переменную. Как мы можем получить доступ к переменным-членам внутри этого объединения?