Rumah >pembangunan bahagian belakang >C++ >Bagaimana Membuat Kelas C Saling Bergantung Tanpa Rujukan Pekeliling?

Bagaimana Membuat Kelas C Saling Bergantung Tanpa Rujukan Pekeliling?

Linda Hamilton
Linda Hamiltonasal
2024-11-09 22:20:041019semak imbas

How to Create Interdependent C   Classes Without Circular References?

Mencipta Kelas Saling Bergantung dalam C

Soalan ini meneroka cara mencipta dua kelas C yang setiap satu mengandungi objek jenis kelas yang lain. Walau bagaimanapun, pendekatan langsung ini membawa kepada ralat disebabkan rujukan bulat.

Pelaksanaan Terus

Pertimbangkan fail pengepala berikut, yang cuba mentakrifkan dua kelas, foo dan bar , setiap satu dengan ahli yang dilindungi daripada jenis kelas lain:

// bar.h
#include "foo.h"
class bar {
  foo f;
};

// foo.h
#include "bar.h"
class foo {
  bar b;
};

Menyusun kod ini mengakibatkan ralat, kerana kedua-dua pengepala menyertakan satu sama lain dan mencipta rujukan bulat.

Penyelesaian: Pengisytiharan dan Penunjuk Hadapan

Untuk memecahkan kitaran rujukan ini, kita boleh menggunakan pengisytiharan dan penunjuk ke hadapan. Pengisytiharan hadapan membolehkan kami mengisytiharkan kewujudan kelas tanpa menentukan ahlinya.

Fail pengepala yang diubah suai ialah:

// bar.h

class foo; // Forward declaration of foo

class bar {
  foo* f;
};

// foo.h

class bar; // Forward declaration of bar

class foo {
  bar* b;
};

Dengan pengisytiharan hadapan ini, pengepala boleh merangkumi satu sama lain tanpa membuat rujukan pekeliling. Takrifan sebenar ahli kelas kemudiannya diletakkan dalam fail .cpp yang sepadan, di mana pengepala yang diperlukan disertakan.

Menggunakan Penunjuk

Untuk menggunakan kelas dengan penunjuk , kami mencipta contoh foo dan bar dengan penunjuk antara satu sama lain:

// main.cpp

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

int main() {
  foo myFoo;
  bar myBar;
  myFoo.f = &myBar; // Assign the address of myBar to myFoo's f
  myBar.b = &myFoo; // Assign the address of myFoo to myBar's b
}

Penyelesaian ini membolehkan kami membuat kelas dengan objek saling bergantung menggunakan penunjuk, memecahkan kitaran rujukan dan mencipta program yang sah.

Atas ialah kandungan terperinci Bagaimana Membuat Kelas C Saling Bergantung Tanpa Rujukan Pekeliling?. 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