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

... 

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

Anche se questo compilare bene, si blocca su di inizializzazione causa enum_ è colata valori come "lungo" che è limitata a 2147483647. Avrei bisogno che fossero non firmati a lungo. C'è un modo per farlo senza dover creare un intero wrapper enum?Boost Python enum_ valore massimo emette

Grazie!

+0

Ho già visto alcune spiegazioni di questo problema su SO. Hai cercato? – sehe

+0

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

+0

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

risposta

1

C++ ti permette di lanciare implicitamente un enum ad un int, non un unsigned int. Hai un limite di INT_MAX come valore massimo. Inoltre, devi convertire uno int (o uno unsigned int convertito in segno) per convertirlo nuovamente in un enum.