比如A类有一个成员是B类对象,B类有一个成员是A类指针,该怎样包含头文件呢?如果写互相包含头文件,会出现下面的错误:
error C2143: 语法错误: 缺少“;”(在“*”的前面)
我总结的一个办法是:
正确的做法
在A.h中
#inclue “B.h”
在B.h中B类的定义前面添加这样一句:
Class A;
类的前置声明和包含头文件的区别在于类的前置声明是告诉编译器有这种类型,但是它没有告诉编译器这种类型的大小、成员函数和数据成员,而包含头文件则是完全告诉了编译器这种类型到底是怎样的(包括大小和成员)。这下我们也明白了为何前置声明只能使用指针来进行,因为指针大小在编译器是确定的。