實際工程中兩個類相互引用的情況還是比較多的,其中大致分爲兩種:
1.同一項目下相互引用。
2.不同項目間相互引用。
情況1:
只需要相互包含頭文件就行了,但是要避免重複包含,用#pragma once或者#ifndef都可以。
如果你編譯時仍然發現存在類或者變量常量未定義,請檢查ifndef中的宏是否與其他衝突,或者#include包含頭文件的順序存在問題。
編譯器在編譯代碼時會先把cpp中含有的頭文件都展開,你可以嘗試模擬這一過程檢查爲什麼編譯會報錯。
情況2:
其中一種方法是我之前有介紹過的"C++兩個項目之間相互引用的方法",利用靜態函數指針來反向調用之後編譯的函數,專業點說就是回調函數。
另外一種就是用虛函數來達成這個效果。
父類在編譯順序靠前的項目中定義,子類在編譯順序靠後的項目中定義,那麼只要這個函數是虛函數,就可以利用父類的指針指向子類實體(當然這個指向操作肯定也是在後面項目中執行的,在前面項目中子類的類名都無法編譯通過),並且調用子類的函數。
(快去把面向對象編程的三大特點重新看看)
好,問題解決,可喜可賀可喜可賀。