包括标头中的结构
Include struct from header
如何将外部头文件中定义的struct
包含到另一个文件中?起初,我通过指针传递结构,所以我只需要一个正向声明。但现在我想传递值,无法使其编译。标头lagerverwaltung.h
确实包含结构,那么问题出在哪里?
文件lagerverwaltung.h
:
#ifndef LAGERVERWALTUNG_H
#define LAGERVERWALTUNG_H
struct etikettInfo{
QString userName;
QList<struct properties_content *> inhalte;
};
class Lagerverwaltung : public QMainWindow
{
Q_OBJECT
... and so on
};
#endif // LAGERVERWALTUNG_H
文件etikett1.h
:
#ifndef ETIKETT1_H
#define ETIKETT1_H
#include "lagerverwaltung.h" // for struct etikettInfo
class Lagerverwaltung;
//struct etikettInfo;
namespace Ui {
class Etikett1;
}
class Etikett1 : public QMainWindow
{
Q_OBJECT
public:
explicit Etikett1(Lagerverwaltung *mainwindow,
etikettInfo etikettData, // <- struct etikettInfo has not been declared
QWidget* parent = 0);
~Etikett1();
private:
Ui::Etikett1 *ui;
Lagerverwaltung *lgrvw;
etikettInfo etikettData; // <- struct etikettInfo does not name a type
};
#endif // ETIKETT1_H
如果重要的话:两个-h文件都包含了保护程序。
好的,错误消息(参见代码中的注释(确实很有描述性,但我不知道我应该做什么不同。
此外,我一直在lagerverwaltung.h 内部包含etikett1.h
这是你的错误。lagerverwaltung.h
包含etikett1.h
,etikett1.h
包含lagerverwaltung.h
,以此类推。换句话说,你有一个循环依赖。include保护可以防止无限包含,但也会导致其中一个标头被包含在另一个标头之前。在这种情况下,首先包括lagerverwaltung.h
,在定义任何东西之前——特别是etikettInfo
——它包括etikett1.h
。。。这取决于尚未定义的CCD_ 12。
如果lagerverwaltung.h
真的依赖于etikett1.h
,并且etikett1.h
在lagerverwaltung.h
中唯一依赖的是etikettInfo
,而lagerverwaltung.h
中没有任何内容依赖于etikettInfo
,那么最简单的解决方案是将etikettInfo
的定义拆分为另一个报头,并将其包括在etikett1.h
中而不是lagerverwaltung.h
中。
struct etikettInfo{
QString userName;
QList<struct properties_content *> inhalte;
};
需要适当的includes才能使其成为正确声明的结构。所以添加
#include <QString>
#include <QList>
以及CCD_ 23的声明。
- 标头,包括在 Swift 项目中使用C++文件时的错误
- 如何将字符串与结构(也包括字符串)进行比较?
- DNS 查询格式标头结构中的小字节序问题
- 标头保护文件中结构的重复符号
- 编译时条件包含.分段标头与包括整个实现
- 混合编程 - 包括C++标头到 Fortran
- 创建结构体向量,表达式:向量下标超出范围
- C++包括标头在内的多个定义
- C++ DLL 标头包括
- C++标准是否包括标准标头必须包含的内容?
- 包括带有 clang 格式的转发标头的顺序
- 从包含 IP 标头片段的二进制文件中读取结构的最佳方法是什么
- 程序运行时包括标头文件
- 我的C程序如何可以从C 文件调用函数,而无需包括标头
- C2065:'class'未声明的标识符,包括标头
- 无法使用标头保护解决包含其自身的文件(包括标头)的错误
- Visual Studio中的嵌套文件夹结构-包括文件
- 包括标头和 Main.h
- VS 2008 - 不包括标头的某些部分
- 包括标头中的结构