假设我有一个带有 typedef A、B 和 C 的头文件 header1.h。B 使用 A,C 使用 B,因此 typedef 的顺序是强制的。现在我决定 typedef B 确实应该位于它自己的头文件(header2.h)中。但我不能从 header1 中包含 header2 (因为这样 typedef B 将在 C 之前),我也不能从 header2 中包含 header1。我尝试转发声明类型,但我认为这只在指向它们时才有效。否则编译器仍然会给出“不完整类型”错误。
最佳答案
我认为你在这里唯一能做的就是将每个 typedef 移动到它自己的 header 中,然后你可以以任意顺序包含它们。像这样:
a.h
#ifndef A_H
#define A_H
typedef int A;
#endif // A_H
b.h
#ifndef B_H
#define B_H
#include "a.h"
typedef A* B;
#endif // B_H
c.h
#ifndef C_H
#define C_H
#include "b.h"
typedef B& C
#endif // C_H
关于c++ - C++头文件的组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36423176/