一般一个程序类这样的:
一个通用的主控类,比如叫 Main,下面多个模块类:A,B,C,一共四个。
A,B,C 类的头文件都被 Main 的头文件 include,然后构造函数初始化 为 a,b,c. Main类中就可以用 this->a 调用模块类的方法。
现在 A,B,C 这些下属模块类也要调用 Main的功能怎么办,也在头文件中包含 Main 吗?这样互相包含头文件可以吗?
不行!
这就要用到 类的前置声明:
A.h 文件:
class Main; //只是一个前置空声明
class A{
Main * parent; //没有包含main.h,也能造一个叫Main的指针啦
}
A.cpp 文件:
#include "main.h" //cpp文件调用具体main头文件,毕竟要操作具体main的方法
这时候你的ide已经能够调用到 Main Class 的方法了,但是运行时会出错,毕竟parent还是个空壳,只需要用构函数传入再赋值就行了