【问题标题】:Qt C++ destructor errorQt C++ 析构函数错误
【发布时间】:2017-05-27 09:43:28
【问题描述】:

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

我有一个父类几何:

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-File 中吗?

【问题讨论】:

  • 你如何构建你的程序?您使用的是 IDE 还是纯文本编辑器?你记得保存头文件吗?你是否使用了正确的头文件?

标签: c++ qt destructor


【解决方案1】:

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

virtual ~Geometry() {} 

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

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

因此您收到的错误。

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

virtual ~Geometry();

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

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2015-04-30
    • 2016-04-02
    • 1970-01-01
    • 2010-12-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    相关资源
    最近更新 更多