我有一个关于继承类的析构函数的问题:
我有一个父类几何:
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文件中吗?
答案 0 :(得分:3)
你有这个,这是析构函数的完整实现:
virtual ~Geometry() {}
然后你添加它,这也是析构函数的完整实现:
Geometry::~Geometry(void)
{
// ...
}
因此您收到的错误。
要解决此问题,请从头文件中删除空大括号:
virtual ~Geometry();
编辑:我发现您进行了更改,因此您很可能没有使用更新的标头重建整个应用程序。