假设我有一个带有typedef A,B和C的头文件header1.h.B使用A和C使用B,因此强制typedef的顺序。现在我决定typedef B真的应该在它自己的头文件(header2.h)中。但是我不能在header1中包含header2(因为那时typedef B将在C之前),我也不能在header2中包含header1。我试图转发声明类型,但我认为只有在指向它们时才有效。否则编译器仍会出现“不完整类型”错误。
答案 0 :(得分:2)
我认为你唯一能做的就是将每个typedef移动到自己的标题中,然后你可以按任意顺序包含它们。像这样:
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