Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Static constexpr char[]' dalam C ?

Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Static constexpr char[]' dalam C ?

DDD
DDDasal
2024-12-17 03:42:25183semak imbas

Why Do I Get an

Ralat Tidak Dijangka: "Rujukan Tidak Ditakrifkan kepada Statik constexpr char[]" dalam Definisi Kelas

Menghadapi "Undefined Rujukan kepada Static constexpr char[] ]" ralat semasa mentakrifkan tatasusunan char const statik dalam kelas boleh membingungkan. Mari kita mendalami isu ini dan meneroka penyelesaiannya.

Seperti yang diserlahkan dalam mesej ralat, pengkompil menjangkakan definisi untuk ahli statik. Dalam coretan kod yang disediakan, anda telah memasukkan pengisytiharan dan pemula dalam definisi kelas, tetapi anda belum memberikan definisi berasingan dalam fail .cpp.

Untuk menyelesaikan masalah ini, ikut langkah berikut:

  1. Berikan definisi:

Dalam .cpp fail, tambah definisi dengan mengisytiharkan ahli statik tanpa pemula, seperti yang dilihat di bawah:

constexpr char foo::baz[];
  1. Pastikan pengisytiharan dan pemula tetap utuh:

Kekalkan pengisytiharan kelas dan pemula untuk ahli statik dalam fail .hpp kerana ia ialah.

Penjelasan:

Dalam C , ahli statik diperuntukkan memori semasa penyusunan dan dikongsi merentas semua kejadian kelas. Apabila mentakrifkan tatasusunan char const statik, kedua-dua pengisytiharan dan pemula mesti disertakan dalam fail pengepala (.hpp). Walau bagaimanapun, takrifan (tanpa pemula) mesti disediakan secara berasingan dalam fail pelaksanaan (.cpp) untuk menyelesaikan isu pautan. Ini memastikan bahawa definisi untuk ahli statik boleh diakses semasa memaut, menyelesaikan ralat "Rujukan Tidak Ditakrifkan".

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan kepada Static constexpr char[]' dalam C ?. 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