2010-06-13 54 views
8

tại sao không phải là trường hợp liệt kê C++ 0x mạnh mẽ so sánh với nhau?đánh máy mạnh mẽ so sánh C++ 0x


Cập nhật: Chúng có thể so sánh được trong gcc 4.6; Tôi không chắc chắn nếu nó làm việc trong gcc 4.4.

+4

vì được nhập mạnh :) –

+0

Câu hỏi thực sự là "ý nghĩa của việc gõ mạnh mẽ là gì?", Tôi nghĩ vậy. –

+0

@phresnel: [gõ mạnh] (http://en.wikipedia.org/wiki/Strong_typing); [liệt kê mạnh mẽ trong C++ 0x] (http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations) –

Trả lời

8

Nếu bạn sử dụng các kiểu liệt kê mạnh mẽ, nó giống như làm cho enum của bạn là một loại thực sự, một lớp học. Sau đó, nó tuân theo các quy tắc tương tự như đối với các lớp học.

Các thể hiện của các lớp khác nhau không thể được so sánh với nhau theo mặc định. Bạn phải định nghĩa một hàm so sánh (hoặc hàm thành viên) để làm cho chúng có thể so sánh được.

Do đó, việc đánh máy được đánh máy mạnh mẽ làm cho nó tuân theo quy tắc rất giống nhau này.

+5

Tôi không thấy bất kỳ việc sử dụng cho một enum mà không có thể so sánh với nhau. IMO, So sánh các trường hợp enum của * cùng * loại là * không * một sự lạm dụng. – balki

+2

@balki Tôi không hiểu bình luận của bạn. enum lớp không cấm so sánh enum với cùng loại, nó cấm so sánh với các loại khác. Tôi sẽ thêm một độ chính xác, trong trường hợp nó không rõ ràng. – Klaim

+2

có. nhưng câu hỏi là về enums cùng loại. Tuy nhiên, cả câu hỏi và câu trả lời đều rõ ràng. – balki

Các vấn đề liên quan