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。