Qt C++ 析构函数错误

Qt C++ destructor error

我有一个关于继承 classes 的析构函数的问题:

我有一个父class几何:

Geometry.h:
    #ifndef GEOMETRY_H
    #define GEOMETRY_H

    #include <QDialog>
    class Geometry : public QDialog
    {
        Q_OBJECT

    public:
        explicit Geometry(QWidget *parent = 0);
        virtual ~Geometry() {}
    };        
    #endif // GEOMETRY_H

Geometry.cpp
    #include "Geometry.h"
    #include "ui_Geometry.h"

      Geometry::Geometry(QWidget *parent) :
          QDialog(parent)  {          }

当我将 Geometry.h 更改为

 virtual ~Geometry() ;

并将以下内容添加到 Geometry.cpp

Geometry::~Geometry(void)
{
   // ...
}

我收到错误 "multiple definition of Geometry::~Geometry() "

你能告诉我为什么会出现这个错误吗?我可以将代码放入 .cpp 文件中,不是吗?

你有这个,这是析构函数的完整实现:​​

virtual ~Geometry() {} 

然后你加上这个,也是析构函数的完整实现:​​

Geometry::~Geometry(void)
{
   // ...
}

这就是您收到的错误。

要解决此问题,请删除 header 文件中的空括号:

virtual ~Geometry();

编辑:我看到您进行了更改,因此您很可能没有使用更新后的 header.

重建整个应用程序