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

Reply via email to