首頁 > 後端開發 > C++ > 如何在 C 中建立相互依賴的類別而不需要無限遞歸?

如何在 C 中建立相互依賴的類別而不需要無限遞歸?

Barbara Streisand
發布: 2024-11-12 08:38:02
原創
691 人瀏覽過

How can you create interdependent classes in C   without infinite recursion?

C 中相互依賴的類別:利用前向聲明

嘗試建立兩個包含彼此類型物件的類別會直接導致以下問題:無限遞歸。為了實現這一點,需要使用指標和前向聲明的解決方法。

在提供的場景中, foo 和 bar 類別之間的循環依賴導致錯誤。為了解決這個問題,使用前向聲明來宣布每個類別的存在而不定義它:

// bar.h
#ifndef BAR_H
#define BAR_H

// Declares the existence of foo without defining it
class foo;

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
#endif
登入後複製
// foo.h
#ifndef FOO_H
#define FOO_H

// Declares the existence of bar without defining it
class bar;

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};
#endif
登入後複製

這些前向聲明允許 foo 和 bar 頭是獨立的,避免循環引用。然後,在各自的 .cpp 檔案中提供每個類別的完整定義,包括指標成員。

使用範例:

#include "foo.h"
#include "bar.h"

int main(int argc, char **argv) {
  foo myFoo;
  bar myBar;
}
登入後複製

現在,程式編譯成功是因為前向聲明使類別能夠間接了解彼此。它們現在可以儲存指向彼此的指針,打破循環並允許創建相互依賴的類別。

以上是如何在 C 中建立相互依賴的類別而不需要無限遞歸?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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