Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Ketergantungan Tajuk Pekeliling dalam C Apabila Kelas Merujuk Satu Sama Lain?

Bagaimana Mengendalikan Ketergantungan Tajuk Pekeliling dalam C Apabila Kelas Merujuk Satu Sama Lain?

Susan Sarandon
Lepaskan: 2024-10-26 12:25:29
asal
524 orang telah melayarinya

How to Handle Circular Header Dependencies in C   When Classes Reference Each Other?

Pengepala Termasuk Satu Sama Lain dalam C

Apabila mencipta kod dalam C di mana kelas merujuk antara satu sama lain, adalah penting untuk mengendalikan kemasukan pengepala dengan sewajarnya fail.

Sertakan Peletakan Penyata

Secara lalai, fail pengepala disertakan di dalam makro (#ifndef guards) untuk mengelakkan rekursi tak terhingga jika pengepala merujuk antara satu sama lain. Dalam contoh yang disediakan, meletakkan penyataan #include di dalam makro menyelesaikan isu di mana setiap kelas menyertakan pengepala kelas yang lain.

Pengisytiharan Hadapan

Dalam situasi yang diterangkan, pengkompil menemui definisi kelas B sebelum kelas A yang dirujuknya. Untuk menyelesaikan masalah ini, pengisytiharan hadapan A diperlukan sebelum definisi kelas B:

<code class="c++">class A;  // Declare A's existence</code>
Salin selepas log masuk

Ini memberitahu pengkompil bahawa A ialah kelas, tanpa memerlukan definisi penuhnya pada ketika itu.

Kod Disemak

Berikut ialah kod yang disemak yang menggabungkan kedua-dua pengisytiharan hadapan dan kemasukan makro dalam:

<code class="c++">// A.h
#ifndef A_H_
#define A_H_

#include "B.h"

class A; // Forward declaration

class A
{
    private:
        B b;

    public:
        A() : b(*this) {}
};

#endif /*A_H_*/

// B.h
#ifndef B_H_
#define B_H_

#include "A.h"

class B
{
    private:
            A& a;

    public:
        B(A& a) : a(a) {}
 };

#endif /*B_H_*/</code>
Salin selepas log masuk

Dengan mengikuti garis panduan ini, kelas boleh merujuk setiap lain dengan betul, ralat kompilasi evitando.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ketergantungan Tajuk Pekeliling dalam C Apabila Kelas Merujuk Satu Sama Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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