不完整类型(incomplete type)就是缺乏足够的信息例如长度去描述一个完整的对象,前向声明就是一种常用的不完整类型
例如class A; class B;只给出了声明没有给出定义,不完整类型必须通过某种方式补充完整,才能使用它们进行实例化。在一些为
了避免出现循环引用、相互引用的错误(见“MFC 调试代码出现“error C3646: 未知重写说明符”的解决方法”)在头文件中没有直接包含对象头文件,而是直接采用声明的方式引用,若在实现文件.cpp中也没有包含对象头文件则会出现“不允许指针指向不完整的
类类型”的错误,例如下面例子:
class A;
class B{
A *Point-A;
}
这是在B.cpp文件中调用Point-A指针就会出现“不允许指针指向不完整的类类型”并附带其他错误提示如下所示:
解决方法:在B的实现文件B.cpp中添加A的头文件#include"A.h"