透過前向聲明在C 中建立相互依賴的類別
在C 中,如何在兩個類別之間建立關係,其中每個類別都包含一個物件其他類別類型?
直接物件嵌入
不幸的是,將每個類別的物件直接嵌入到另一個類別中是不可行的。這種循環引用會產生無限的空間需求。
解決方法:基於指標的關係
相反,我們可以利用指標來建立這種關係。為了打破循環依賴,我們使用前向聲明。
前向聲明
在類頭(例如bar.h 和foo.h)中,我們聲明另一個類的存在而不定義它:
// bar.h class foo; // Declare that the class foo exists class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Declare that the class bar exists class foo { public: bar* getBar(); protected: bar* f; };
現在,每個標頭都知道另一個類別沒有完整定義的類別。
類別實作
在對應的.cpp 檔案中,我們包含另一個標頭以存取其完整定義:
// foo.cpp #include "bar.h" // ... Implementations of foo methods
// bar.cpp #include "foo.h" // ... Implementations of bar methods
用途main()
最後,在在main.cpp 中,我們可以建立類別的實例:
#include "foo.h" #include "bar.h" int main() { foo myFoo; bar myBar; }
此策略允許我們建立相互利用的類,而不會產生循環參考問題。
以上是如何使用前向聲明在 C 中建立相互依賴的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!