兩個類標頭檔案互相包含

2022-09-18 03:33:40 字數 930 閱讀 5474

c++中兩個類的標頭檔案互相包含問題 - csdn部落格  

我們知道,當乙個類(設類a)中包含另乙個類(設類b)的物件時,必須在該檔案中包含另乙個類的標頭檔案,如果兩個類都互用到了對方的物件,理論上就要互相包含標頭檔案,但是這樣是不可取的。貼出**如下:

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

為了解決這個問題,只需要去掉乙個或則都去掉包含的標頭檔案語句即可,為了要去掉包含的標頭檔案

語句,就不能在類中定義另外乙個類的物件,而我們卻是要在該類中使用另外乙個類的物件,那麼

就可以利用物件的指標,而用物件的指標卻可以不用包含標頭檔案,做簡單的宣告即可。這樣就打破

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

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

1、如果在a類中使用了b類的物件,那麼就必須包含b類的標頭檔案,而b類中就不能使用a類的物件了,

這時就可以用物件的指標,用物件的指標,可以作簡單的宣告即可代替標頭檔案的包含。此類情況的

**如下:

最後應該注意,b類中使用的是指標,所以使用前必須先初始化,讓其指向乙個存在的物件;

另外,為了通過指標使用a類的成員函式,那麼就在b類的原始檔中加上包含a類的標頭檔案語句。

2、兩個類中互相使用了對方的指標,這樣的情況很簡單,分別在各自的標頭檔案中宣告一下使用的類,

而在各自的原始檔中包含對方的標頭檔案即可。(也可以根據情況1來解決)

這樣就有效解決了標頭檔案互相包含的問題。

參考資料:

兩個類的標頭檔案互相包含

我做任務的時候遇到了兩個類都互相包含對方的物件的問題,本來是有錯誤的,但經過我一番改動,兩個標頭檔案互相包含同時,每個標頭檔案都含有令乙個類的前置宣告。雖然最後執行正確,但是方法不太正確,我寫的程式打包放在了碼雲我的私密倉庫裡,在網上看到了比較正確的方法記錄下來。我們知道,當乙個類 設類a 中包含另...

C 中兩個類的標頭檔案互相包含問題

我們知道,當乙個類 設類a 中包含另乙個類 設類b 的物件時,必須在該檔案中包含另乙個類的標頭檔案,如果兩個類都互用到了對方的物件,理論上就要互相包含標頭檔案,但是這樣是不可取的。貼出 如下 檔案a.h中的 02.pragma once 03.include b.h 04.class a 05.09...

解決MFC中兩個類互相包含標頭檔案所導致的錯誤

這個問題簡單但是又容易犯錯,當 出現錯誤的時候讓人非常的懊惱 比如有兩個類 cleftview和cimplicitmodelview兩個類,現在有這樣的需求需要在兩個類中都呼叫對方的函式,所以就在cleftview.h中加上 include cimplicitmodelview 在cimplicit...