C++ - 对`vtable的未定义引用

Aer*_*ate 6 c++ qt

我想知道为什么我得到这个错误:未定义引用`vtable for BaseRenderer'

我试着四处寻找,但似乎无法解决这个问题.我已经尝试摆脱虚函数,删除构造函数等.

我的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;

};
Run Code Online (Sandbox Code Playgroud)

我的BaseRenderer.cpp

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

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

}

BaseRenderer::~BaseRenderer()
{
    //dtor
}
Run Code Online (Sandbox Code Playgroud)

我该如何摆脱这个问题呢?我也听说可能是编译器......?谢谢您的帮助 :)

小智 9

由于Q_OBJECT位于父类Renderer中,因此您不必将其包含在BaseRenderer中.摆脱Q_OBJECT,它应该工作:)