2012-05-31 16 views
7

g++ नीचे कोड के साथ एक पार्स त्रुटि रिपोर्ट कर रहा है:जी ++ पार्स में त्रुटि ":"

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

मेरी कक्षा QObject से ली गई है और मैं त्रुटि से पहले Q_OBJECT मैक्रो घोषणा की है, लेकिन अगर मैं बाहर टिप्पणी slots भाग, यह ठीक संकलित करता है। मैंने वर्षों के लिए Qt का उपयोग किया है और इसे पहले कभी नहीं देखा है, यह कुछ बेवकूफ होना चाहिए, लेकिन मैं नहीं देख सकता कि समस्या का कारण क्या है।

+1

यह सिर्फ 'सुरक्षित नहीं है? –

+3

क्या आपने g ++ से पहले moc के माध्यम से कोड पारित किया था? –

+3

"स्लॉट" और "संकेत" खंडों में केवल कार्य होना चाहिए; न तो प्रकार और न ही सदस्य चर। – leemes

उत्तर

6

कक्षा परिभाषा में "स्लॉट" और "सिग्नल" अनुभागों में केवल कार्य होना चाहिए; न तो प्रकार और न ही सदस्य चर।

आप किसी सार्वजनिक में typedef बढ़ना चाहिए, संरक्षित या निजी अनुभाग: `slots` बिना`:

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