兩個類頭文件互相包含


此文轉載自:

C++中兩個類的頭文件互相包含問題 - CSDN博客  http://blog.csdn.net/a812073479/article/details/38542515

 

我們知道,當一個類(設類A)中包含另一個類(設類B)的對象時,必須在該文件中包含另一個類的頭文件,如果兩個類都互用到了對方的對象,理論上就要互相包含頭文件,但是這樣是不可取的。貼出代碼如下:

 

這樣是無法通過編譯的,其原因是它們的頭文件互相包含了,你包含我,我又包含你,沒完沒了!

為了解決這個問題,只需要去掉一個或則都去掉包含的頭文件語句即可,為了要去掉包含的頭文件

語句,就不能在類中定義另外一個類的對象,而我們卻是要在該類中使用另外一個類的對象,那么

就可以利用對象的指針,而用對象的指針卻可以不用包含頭文件,做簡單的聲明即可。這樣就打破

了你包含我,我包含你的情況。(當然也可以利用全局對象、類的繼承來解決!)

 

根據情況,可以分為是否使用類的對象:(這里使用類的對象是指將對象當作類的成員)

1、如果在A類中使用了B類的對象,那么就必須包含B類的頭文件,而B類中就不能使用A類的對象了,

這時就可以用對象的指針,用對象的指針,可以作簡單的聲明即可代替頭文件的包含。此類情況的

代碼如下:

 

  

最后應該注意,B類中使用的是指針,所以使用前必須先初始化,讓其指向一個存在的對象;

另外,為了通過指針使用A類的成員函數,那么就在B類的源文件中加上包含A類的頭文件語句。

 

2、兩個類中互相使用了對方的指針,這樣的情況很簡單,分別在各自的頭文件中聲明一下使用的類,

而在各自的源文件中包含對方的頭文件即可。(也可以根據情況1來解決)

 

這樣就有效解決了頭文件互相包含的問題。

參考資料:http://blog.sina.com.cn/s/blog_6e04a8350100sonp.html

http://blog.csdn.net/yang_lang/article/details/6767439


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM