tôi thấy một số mã như sau:Cách sử dụng của công đoàn trong một lớp
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'?
}
};
tôi đã biên soạn mã trên với VS2010 mà không cần bất kỳ lỗi. Đây là câu hỏi,
tại sao p có biến thành viên 'tiếp theo'?
union {
B *rep;
A *next;
};
Theo như tôi biết, đây là một liên minh ẩn danh mà thậm chí không xác định biến. Làm thế nào chúng ta có thể truy cập vào các biến thành viên bên trong liên minh này như thế?
'Bởi vì đó là điều mà một công đoàn ẩn danh thực hiện' - một điểm tốt là gì. Nếu tôi cung cấp một biến ở cuối định nghĩa công đoàn, thì mã sẽ không chính xác nữa - cảm ơn bạn – q0987