首頁 > 後端開發 > C++ > 如何使用前向聲明在 C 中建立相互依賴的類別?

如何使用前向聲明在 C 中建立相互依賴的類別?

Linda Hamilton
發布: 2024-11-23 20:44:15
原創
987 人瀏覽過

How to Create Interdependent Classes in C   Using Forward Declarations?

透過前向聲明在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板