Try using this compiler option for cpp: pure_enums: Generate pure enums instead of wrapper classes.
- Jim On Tue, Mar 13, 2018 at 8:02 AM, Gianni Ambrosio < gianni.ambro...@vi-grade.com> wrote: > Dear All, > has enum generation changed from thrift v 0.9.1 to 0.11.0? > > In Thrift IDL I have: > > enum WidgetId > { > LAP_TIME = 0, > TRACK_MAP = 1, > TELEMETRY = 2, > G_METER = 3, > STEER = 4, > COLLISION = 5, > COUNT = 6 > } > > And in C++ code I used simply the "WidgetId" type. While now I get a > compiler error and it seems I have to use WidgetId::type instead of > WidgetId. Looking at the generated C++ code now I see: > > struct WidgetId { > enum type { > LAP_TIME = 0, > TRACK_MAP = 1, > TELEMETRY = 2, > G_METER = 3, > STEER = 4, > COLLISION = 5, > COUNT = 6 > }; > }; > > Unfortunately I don't have the old generated code to compare it with the > new one. > I'm looking at the thrift versions changes but at the moment I didn't find > anything related to enums and C++. Nothing on Thrift documentation either. > > On the C# side the enum generations has not been changed and it is a flat > enum: > > public enum WidgetId > { > LAP_TIME = 0, > TRACK_MAP = 1, > TELEMETRY = 2, > G_METER = 3, > STEER = 4, > COLLISION = 5, > COUNT = 6, > } > > So, basically, I don't like the hadrcoded "type". Is there a way to > generate a flat enum also for c++ with Thrift 0.11.0? Or is there a way to > customize the generated struct name and enum name? I mean, so that I get a > Widget::Id enum in C++ generated code? > > Best regards, > Gianni > >