2016-02-12 14 views
5

Nhờ C++ 11, chúng tôi đã có Enums được đánh vần và mạnh mẽ.
Nhưng có bất kỳ kế hoạch nào để mở rộng không?Kế hoạch mở rộng Enums

Something như thế này:

enum class OneTwoThree : char {one=1, two=2, three=3}; 
enum class Four : char {four=4} extends OneTwoThree; 
+0

Theo như tôi biết, không. – Vitaliy

+1

Nếu tôi không nhầm, khai báo 'enum class' chỉ nói để cấm chuyển đổi ngầm giữa các giá trị enum/số nguyên, vv, nó không thực sự khiến enum đại diện cho một kiểu hoàn chỉnh như trong Java/Python/v.v. Chưa kể rằng cú pháp cho subclassing đã được sử dụng để chỉ ra kiểu dữ liệu cơ bản và 'extends' không phải là từ khóa C++, và iirc ủy ban chuẩn C++ không thích thêm từ khóa mới. Nếu bạn thực sự cần một kiểu liệt kê có thể phân lớp trong C++, bạn nên sử dụng một khuôn mẫu với các đối số variadic, nó sẽ cung cấp cho bạn toàn bộ thời gian biên dịch của enums – JAB

+4

@JAB: _Complete type_ có ý nghĩa cụ thể trong C++ và * * mỗi ** 'enum' loại là một _complete type_. 'void' là một ví dụ về kiểu không hoàn chỉnh. – MSalters

Trả lời

3

Nó không xuất hiện như vậy.

Không có gì trong C++ xảy ra mà không có giấy. Thuận tiện, bạn có thể xem tất cả các giấy tờ trực tuyến here và theo dõi thảo luận không chính thức hơn trong các nhóm nghiên cứu về sự tiến hóa ngôn ngữ trên nhóm official forums (nhóm "Đề xuất trong tương lai" có thể là nhóm bạn muốn quan tâm đến thay đổi đối với bảng liệt kê) .

Đối với các giấy tờ, một tìm kiếm lướt qua các tiêu đề cho bài báo lại đến năm 2011 cho thấy các vấn đề sau:

Không có giấy tờ nào liên quan đến cơ chế để thêm giá trị vào các bảng liệt kê hiện có. Tương tự, tìm kiếm cursory cho "enum" trong nhóm Đề xuất trong tương lai cho năng suất của các đối tượng, không ai trong số đó xuất hiện để thêm các giá trị mới vào một điều tra từ một nơi khác với định nghĩa ban đầu của liệt kê.


Một số nỗ lực đã được thực hiện để thực hiện loại chức năng này mà không có thư viện hoặc ngôn ngữ; questions exploring the subject already exist on StackOverflow và có thể hữu ích cho bạn.

+0

Cảm ơn bạn đã trả lời rộng rãi. – ttuna