Qt C ++析构函数错误

时间:2017-01-12 10:19:38

标签: c++ qt destructor

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

我有一个父类几何:

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)
{
   // ...
}

我得到错误“Geometry :: ~Geometry()的多重定义”

你能告诉我为什么会收到这个错误吗?我可以把代码放在.cpp文件中吗?

1 个答案:

答案 0 :(得分:3)

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

virtual ~Geometry() {} 

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

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

因此您收到的错误。

要解决此问题,请从头文件中删除空大括号:

virtual ~Geometry();

编辑:我发现您进行了更改,因此您很可能没有使用更新的标头重建整个应用程序。