组织c ++头文件

时间:2016-04-05 10:02:59

标签: c++ dependencies header-files forward-declaration

假设我有一个带有typedef A,B和C的头文件header1.h.B使用A和C使用B,因此强制typedef的顺序。现在我决定typedef B真的应该在它自己的头文件(header2.h)中。但是我不能在header1中包含header2(因为那时typedef B将在C之前),我也不能在header2中包含header1。我试图转发声明类型,但我认为只有在指向它们时才有效。否则编译器仍会出现“不完整类型”错误。

1 个答案:

答案 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