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

Linda Hamilton
Lepaskan: 2024-11-23 20:44:15
asal
921 orang telah melayarinya

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;
};
Salin selepas log masuk
// foo.h
class bar; // Declare that the class bar exists

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};
Salin selepas log masuk

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
Salin selepas log masuk
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan