我知道这个话题已经讨论过了,但是我花了半天的时间才弄清楚我做错了什么。我一直遇到这个错误,我想我已经完成了数千个语法检查。谁能帮我?
#ifndef ADDEDITDIALOG_H
#define ADDEDITDIALOG_H
#include <QDialog>
#include <QStandardItemModel>
#include "characteristics.h"
#include "equipment.h"
#include "generaldata.h"
#include "registration.h"
#include "revisiondialog.h"
#include "vehicle.h"
#include "vehiclehelper.h"
#include "verification.h"
#include "verificationdialog.h"
namespace Ui {
class AddEditDialog;
}
class AddEditDialog : public QDialog
{
Q_OBJECT
public:
explicit AddEditDialog(QWidget *parent = 0);
~AddEditDialog();
bool getIsNew() const;
bool getIsEdited() const;
bool getAddRevision() const;
Vehicle getVehicleToAdd() const;
void setVehicleToAdd();
void loadVehicleToEdit(Vehicle car);
void createTableView(const QList<Verification> list);
QList<Verification> getRevisionsList() const;
private slots:
void on_add_revision_clicked();
void on_save_clicked();
void on_cancel_clicked();
void on_generate_reg_number_clicked();
private:
Ui::AddEditDialog *ui;
RevisionDialog *newDialog; //this line is giving the error
Vehicle toAdd;
bool isNew;
bool isEdited;
bool addRevision;
QList<Verification> newVerificationList;
QStandardItemModel *newModel;
};
#endif // ADDEDITDIALOG_H
版本对话框
#ifndef REVISIONDIALOG_H
#define REVISIONDIALOG_H
#include <QDialog>
#include "addeditdialog.h"
#include "verification.h"
namespace Ui {
class RevisionDialog;
}
class RevisionDialog : public QDialog
{
Q_OBJECT
public:
explicit RevisionDialog(QWidget *parent = 0);
~RevisionDialog();
void setRevision();
void setRevisionsList();
Verification getRevision() const;
bool getOk() const;
private slots:
void on_ok_revision_clicked();
void on_cancel_revision_clicked();
private:
Ui::RevisionDialog *ui;
QList<Verification> revisionsList;
Verification revision;
bool okClicked;
};
#endif // REVISIONDIALOG_H
最佳答案
RevisionDialog
是未定义的类型。
我看到你包括
#include "revisiondialog.h"
在顶部,它应该定义了
RevisionDialog
。但是,显然您设法创建了一个循环包含依赖关系,这意味着
revisiondialog.h
也直接或间接包含了addeditdialog.h
(如果产生错误的 header 名称)。包含防护破坏了包含循环,导致一个圆形的 header 在物理上首先被包含,另一个在物理上被包含。在您的情况下,首先包含了
addeditdialog.h
,这就是为什么它对revisiondialog.h
的内容一无所知的原因。摆脱循环包含依赖。除非您这样做,否则别无所求。
P.S. 现在,当您发布
revisiondialog.h
的内容时,很明显它还包含addeditdialog.h
。这是你的问题。为什么您的
revisiondialog.h
包括addeditdialog.h
?有什么需要?