2012-05-31 14 views
7

g++ está reportando un error de análisis con el código de abajo:g ++ Error de análisis en ":"

class Sy_timeLineDelegateScene : public QGraphicsScene 
{ 
    Q_OBJECT 
public: 
    Sy_timeLineDelegateScene(Sy_animPropertyTimeLine* timeline, 
           Sy_animClock* clock, 
           QObject* parent = nullptr); 
    virtual ~Sy_timeLineDelegateScene() {} 

protected slots: // Parse error at ":" 
    typedef QMap< Sy::Frame, Sy_timeLineDelegateKey* > DelegateTimeLine; 
... 

Mi clase se deriva de QObject y me han declarado la macro Q_OBJECT antes del error, pero si comento hacia fuera la parte slots, compila bien. He usado Qt durante años y nunca he visto esto antes, debe ser algo estúpido, pero no puedo ver cuál es la causa del problema.

+1

¿No es simplemente 'protegidos:' 'sin la slots'? –

+3

¿Pasaste el código a través de moc antes de g ++? –

+3

Las secciones "slots" y "signals" solo deben contener funciones; ni tipos ni variables de miembros. – leemes

Respuesta

6

Las secciones "slots" y "señales" en una definición de clase solo deben contener funciones; ni tipos ni variables de miembros.

debe mover el typedef en un público, protegido o sección privada:

class Sy_timeLineDelegateScene : public QGraphicsScene 
{ 
    Q_OBJECT 
public: 
    Sy_timeLineDelegateScene(Sy_animPropertyTimeLine* timeline, 
           Sy_animClock* clock, 
           QObject* parent = nullptr); 
    virtual ~Sy_timeLineDelegateScene() {} 

    typedef QMap< Sy::Frame, Sy_timeLineDelegateKey* > DelegateTimeLine; 

protected slots: 
... 
Cuestiones relacionadas