I thought that must be it, just surprised it's not mentioned in the documentation: https://doc.qt.io/qt-5/qobject.html#Q_ENUM
Tom Isaacson -----Original Message----- From: Interest <interest-bounces+tom.isaacson=navico....@qt-project.org> On Behalf Of Henry Skoglund Sent: Saturday, 27 October 2018 15:20 To: interest@qt-project.org Subject: Re: [Interest] Q_ENUM doesn't work for private enums On 27/10/2018 03.07, Tom Isaacson wrote: > I'm using Qt 5.6 in Visual Studio 2017. I've got a class that looks like: > class tClass : public QObject > { > Q_OBJECT > > private: > enum class eMode > { > Mode1, > Mode2, > Mode3 > }; > > When I add: > Q_ENUM(eMode) > after the enum declaration I get an error: > moc_tclass.cpp(): error C2248: 'tClass::eMode': cannot access private enum > declared in class 'tClass' > tclass.h(348): note: see declaration of 'tClass:: eMode' > tclass.h(): note: see declaration of 'tClass > > Is this a known limitation of Q_ENUM? Is it fixed in later versions of Qt? > Hi, the Q_ENUM macro relies on static data structures declared in the moc_tclass.cpp file (outside of the scope of the tclass) and these declarations fail for private stuff. So changing that "private:" to "public:" is the pretty much your only choice for Q_ENUM to work :-( Rgrds Henry _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest