一般一個(gè)程序類這樣的:
一個(gè)通用的主控類,比如叫 Main,下面多個(gè)模塊類:A,B,C,一共四個(gè)。
A,B,C 類的頭文件都被 Main 的頭文件 include,然后構(gòu)造函數(shù)初始化 為 a,b,c. Main類中就可以用 this->a 調(diào)用模塊類的方法。
現(xiàn)在 A,B,C 這些下屬模塊類也要調(diào)用 Main的功能怎么辦,也在頭文件中包含 Main 嗎?這樣互相包含頭文件可以嗎?
不行!
這就要用到 類的前置聲明:
A.h 文件:
class Main; //只是一個(gè)前置空聲明
class A{
Main * parent; //沒(méi)有包含main.h,也能造一個(gè)叫Main的指針啦
}
A.cpp 文件:
#include "main.h" //cpp文件調(diào)用具體main頭文件,畢竟要操作具體main的方法
這時(shí)候你的ide已經(jīng)能夠調(diào)用到 Main Class 的方法了,但是運(yùn)行時(shí)會(huì)出錯(cuò),畢竟parent還是個(gè)空殼,只需要用構(gòu)函數(shù)傳入再賦值就行了