2016-04-05 3 views
2

Предположим, у меня есть заголовочный файл header1.h с typedefs A, B и C. B использует A и C использует B, поэтому порядок typedefs принудительно. Теперь я решил, что typedef B действительно должен быть в собственном файле заголовка (header2.h). Но я не могу включить header2 из header1 (потому что тогда typedef B был бы до C), я также не могу включить header1 из header2. Я пытался направить объявления типов, но я думаю, что это работает только при указании на них. В противном случае компилятор по-прежнему дает ошибку «неполного типа».Организация файлов заголовков C++

ответ

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