2010-12-01 15 views
5

मैं सोच रहा था कि मैं क्यों इस त्रुटि हो रही थी: BaseRenderer 'सी ++ - करने के लिए अपरिभाषित संदर्भ `vtable

मैं चारों ओर खोज की कोशिश की, लेकिन यह पता लगाने की नहीं कर पा रहे के लिए` vtable को अपरिभाषित संदर्भ। मैं हो रही आभासी समारोह से छुटकारा की कोशिश की है, निर्माता को हटाने, आदि

मेरे BaseRenderer.h

class BaseRenderer : public Renderer 
{ 
Q_OBJECT 

    public: 
     BaseRenderer(); 
     BaseRenderer(QWidget *parent); 
     void paintGL(); 

     virtual ~BaseRenderer(); 

public slots: 
    void loadDialog(); 

signals: 

    protected: 
     Mesh loadMesh(string fileName); 

    private: 

     OBJParser objParser; 
     Mesh baseTerrain; 

}; 

मेरे BaseRenderer.cpp

BaseRenderer::BaseRenderer()    <------ Error leads me here 
{ 
} 

BaseRenderer::BaseRenderer(QWidget *parent) : Renderer(parent) 
{ 

} 

BaseRenderer::~BaseRenderer() 
{ 
    //dtor 
} 

मैं कैसे छुटकारा हो रही है के बारे में जाना होगा इस मुद्दे का? मैंने यह भी सुना है कि यह संकलक हो सकता है ...? मदद :)

+0

कंपाइलर को दिए गए पैरामीटर क्या हैं? – sashang

+0

Q_OBJECT क्या है? –

+0

@ जॉन - यह एक क्यूटी मैक्रो है, जिसका अर्थ है कि इस स्रोत फ़ाइल को स्लॉट और सिग्नल जैसे क्यूटी-विशिष्ट व्यवहारों के लिए उत्पन्न कोड के समूह के लिए एक अलग क्यूटी टूल ('moc.exe') के माध्यम से चलाया जाना है। – birryree

उत्तर

9

चूंकि Q_OBJECT मूल वर्ग में है, रेंडरर, आपको इसे बेस रेन्डरर भी शामिल करने की आवश्यकता नहीं है। बस Q_OBJECT से छुटकारा पाने और यह काम करना चाहिए :)

+0

यह मेरे लिए काम करता है। क्या आप इसे विस्तारित कर सकते हैं क्यों Q_OBJECT को हल करना इसे हल करता है? मैं QWidget से चीज subclass – swdev

1

के लिए धन्यवाद मैं इस अत्यधिक बेकार संदेश वास्तव में के बारे में आप अपने BaseRenderer कक्षा में अन्य कार्यों के लिए परिभाषाएँ प्रदान नहीं, के रूप में अपने baseRenderer.cpp फ़ाइल केवल निर्माता और विनाशकर्ता है लगता शिकायत कर रहा है लगता है।

1

सुनिश्चित करें कि आप सभी घोषित विधियों, विशेष रूप से स्लॉट को लागू करें। फिर जांचें कि आपका हेडर .pro फ़ाइल में हेडर अनुभाग में सूचीबद्ध है और फिर qmake चलाएं।

1

मैं यह एक ही मुद्दा रहा था जब यह सवाल पूछ रहा है लगता है कि होगा: Why won't this compile (link) with the Q_OBJECT macro in place?

paxdiablo और टोबियास तरह qmake का पुनर्प्रसारण सुझाव है की कोशिश करो।

संबंधित मुद्दे