Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencipta Kelas Saling Bergantung dalam C Menggunakan Pengisytiharan Hadapan?

Bagaimana untuk Mencipta Kelas Saling Bergantung dalam C Menggunakan Pengisytiharan Hadapan?

Linda Hamilton
Linda Hamiltonasal
2024-11-23 20:44:15897semak imbas

How to Create Interdependent Classes in C   Using Forward Declarations?

Mencipta Kelas Saling Bergantung dalam C Melalui Pengisytiharan Hadapan

Dalam C , bagaimana seseorang boleh mewujudkan hubungan antara dua kelas di mana setiap satu mengandungi objek jenis kelas yang lain?

Objek Langsung Membenamkan

Malangnya, membenamkan objek setiap kelas secara langsung dalam kelas yang lain tidak boleh dilaksanakan. Rujukan bulat ini mewujudkan keperluan ruang yang tidak terhingga.

Penyelesaian: Perhubungan Berasaskan Penunjuk

Sebaliknya, kita boleh menggunakan penunjuk untuk mewujudkan perhubungan ini. Untuk memecahkan pergantungan pekeliling, kami menggunakan pengisytiharan hadapan.

Pengisytiharan Hadapan

Dalam pengepala kelas (cth., bar.h dan foo.h), kami mengisytiharkan kewujudan kelas lain tanpa mentakrifkannya:

// 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;
};

Kini, setiap pengepala tahu tentang kelas lain tanpa definisi penuhnya.

Pelaksanaan Kelas

Dalam fail .cpp yang sepadan, kami memasukkan pengepala lain untuk mendapatkan akses kepada definisi penuhnya:

// foo.cpp
#include "bar.h"

// ... Implementations of foo methods
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods

Penggunaan dalam main()

Akhir sekali, dalam main.cpp, kita boleh mencipta contoh kelas:

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

int main() {
  foo myFoo;
  bar myBar;
}

Strategi ini membolehkan kita mencipta kelas yang menggunakan satu sama lain tanpa memerlukan isu rujukan pekeliling.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kelas Saling Bergantung dalam C Menggunakan Pengisytiharan Hadapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn