定义了两个头文件
//a.h
#include"b.h"
class a
{
…
b *b1;
};
//b.h
#include "a.h"
class b
{
…
a *a1;
};
这样子是编译不了,能不能提供一个实用的解决方案,最好能说说原理。
两个头文件相互包含会导致超前引用的问题,所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数,发生这种情况是无法编译通过的,不过可以采取一些手段解决该问题。
超前引用导致的错误有以下处理办法:
使用类声明,在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。
扩展资料:
头文件:
1、头文件开头处的版权和版本声明;
2、预处理块;
3、nline函数的定义;
4、函数和类结构声明等。
在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件。头文件的这种结构,是利用C语言进行开发软件所通常具备的,属于公有知识。
参考资料来源:百度百科-头文件