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

Susan Sarandon
Lepaskan: 2024-10-26 12:25:29
asal
399 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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!