首頁 > 後端開發 > C++ > 如何在 C 中建立相互共享實例的類別?

如何在 C 中建立相互共享實例的類別?

Linda Hamilton
發布: 2024-11-11 08:22:02
原創
734 人瀏覽過

How to Create Classes That Share Instances of Each Other in C  ?

在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中文網其他相關文章!

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