在C 中建立共享彼此實例的類別
嘗試在C 中建立兩個類,其中每個類別都需要一個對象如果將其他類別作為成員,則可能會發生編譯錯誤。這是因為直接物件包含會導致記憶體分配無限循環。
解決方案:使用指標作為類別成員
要避免此問題,請建立指標作為類別成員而不是直接物件。這種方法涉及前向聲明來宣布類別的存在,而不提供其完整定義。
在bar.h 中:
#ifndef BAR_H #define BAR_H class foo; // Forward declare foo class bar { public: foo* getFoo(); protected: foo* f; }; #endif
在foo.h 中:
#ifndef FOO_H #define FOO_H class bar; // Forward declare bar class foo { public: bar* getBar(); protected: bar* f; }; #endif
在各自的.cpp 檔案中,包含其他類別的標頭:
// foo.cpp #include "foo.h" #include "bar.h" // bar.cpp #include "bar.h" #include "foo.h"
這種方法打破了循環引用循環,並允許創建透過指標利用彼此實例的類別。
以上是如何在 C 中建立相互共享實例的類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!