2010-12-01 79 views
5

我想知道爲什麼我收到此錯誤: 未定義的參考`虛表的BaseRenderer」C++ - 未定義參考`虛表

我試圖尋找周圍,但似乎無法弄清楚這一點。我試圖擺脫虛函數,去除構造等

我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 2010-12-01 05:51:21

+0

什麼是Q_OBJECT? – 2010-12-01 05:59:34

回答

9

由於Q_OBJECT位於父類Renderer中,因此不必將其包含在BaseRenderer中。剛剛擺脫Q_OBJECT的,它應該工作:)

1

我覺得這非常無益的消息真的抱怨你沒有提供其他功能定義在BaseRenderer類,如您baseRenderer.cpp文件似乎只有構造函數和析構函數。

1

確保你實現了所有聲明的方法,尤其是插槽。然後檢查頭文件是否在.pro文件的HEADERS部分中列出,然後運行qmake。