2012-05-31 34 views
7

g++ zgłasza błąd składniowy z poniższym kodzie:g ++ Błąd składni w „:”

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; 
... 

Moja klasa jest pochodną QObject i ja ogłoszony Q_OBJECT makro przed błędem, ale gdybym wykomentuj część slots, kompiluje się dobrze. Używałem od lat Qt i nigdy wcześniej tego nie widziałem, to musi być coś głupiego, ale nie widzę, co powoduje problem.

+1

Czy to nie jest po prostu 'protected:' 'slots' bez? –

+3

Czy przekazałeś kod przez moc przed g ++? –

+3

Sekcje "gniazda" i "sygnały" powinny zawierać wyłącznie funkcje; ani typy, ani zmienne członkowskie. – leemes

Odpowiedz

6

Sekcje "gniazd" i "sygnałów" w definicji klasy powinny zawierać wyłącznie funkcje; ani typy, ani zmienne członkowskie.

Należy przesunąć typedef w publicznej lub prywatnej chroniony odcinek:

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: 
...