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:
Dalam .cpp fail, tambah definisi dengan mengisytiharkan ahli statik tanpa pemula, seperti yang dilihat di bawah:
constexpr char foo::baz[];
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!