2014-04-11 11 views
5
enum MyEnum 
{ 
    SOME_NAME = 2147483648; 
}; 

... 

enum_<MyEnum>("MyEnum") 
    .value("SOME_NAME", SOME_NAME) 
; 

Trong khi điều này biên dịch tốt, nó bị treo trên khởi nguyên nhân enum_ được đúc giá trị như "dài" mà được giới hạn trong 2147483647. Tôi cần chúng không được ký tên lâu. Có cách nào để làm điều đó mà không cần phải tạo ra một toàn bộ wrapper enum?Boost Python enum_ trị tối đa vấn đề

Cảm ơn!

+0

Tôi đã thấy các giải thích về vấn đề này trên SO trước đây. Bạn đã tìm kiếm chưa? – sehe

+0

http://stackoverflow.com/a/31618198/85371 – sehe

+0

http://stackoverflow.com/questions/34332372/boostpythonenum-large-uint32-crash – sehe

Trả lời

1

C++ cho phép bạn ngầm đúc một enum một int, không phải là một unsigned int. Bạn được giới hạn ở số INT_MAX làm giá trị tối đa. Hơn nữa, bạn phải đúc một số int (hoặc một số unsigned int trở thành ký hiệu chuyển đổi) để chuyển đổi lại thành enum.

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