Tất cả các symbols trong enum đều phải là duy nhất mặc dù chúng có thể nhận giá trị giống nhau.
enum sau đây →
1 |
enum letters { A = 1, B = 0, C, D, A = 1}; |
là không hợp lệ và sẽ gây ra lỗi biên dịch.
Thêm nữa các symbols trong enum phải là duy nhất trong 1 namespace. 2 kiểu enum khác nhau trong cùng một namespace không được có dùng một symbol
Các enum sau →
1 2 |
enum Animals { DOG, CAT, PIG}; enum Commands {LS, CD, CAT}; |
là không hợp lệ vì có cùng symbol là “CAT”.
Chúng ta có thể tránh việc xung đột trên bằng cách đưa 1 hoặc cả 2 enum trên vào các class khác nhau. ví dụ như sau →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Animals { public: enum names {DOG, CAT, CHUPACABRA}; }; class Commands { public: enum names {LS, CD, CAT}; }; int main(void) { Animals::names a = Animals::CAT; Commands::names c = Commands::CAT; return 0; } |
Chúng ta có thể nói rằng 2 symbol CAT bây giờ tồn tại ở 2 thế giới khác nhau và không liên quan gì đến nhau nữa.