Qt C++析构函数错误

Qt C++ destructor error

本文关键字:错误 析构函数 C++ Qt      更新时间:2023-10-16

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

我有一个父类几何:

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

当我将几何.h 更改为

 virtual ~Geometry() ;

并将以下内容添加到几何图形中.cpp

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

我收到错误"几何的多重定义::~几何()"

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

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

virtual ~Geometry() {} 

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

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

因此,您收到的错误。

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

virtual ~Geometry();

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