Rujukan Tidak Ditakrifkan kepada Static constexpr Char Array: Memahami Isu Rujukan Tidak Ditakrifkan
Dalam bahasa pengaturcaraan C, adalah mungkin untuk mentakrifkan pemalar statik tatasusunan aksara dalam kelas. Walau bagaimanapun, pembangun mungkin menghadapi ralat "rujukan tidak ditentukan" semasa cuba merujuk tatasusunan sedemikian dalam kod mereka. Ralat ini berlaku kerana pengkompil memerlukan pengisytiharan dan definisi ahli statik.
Untuk menyelesaikan isu ini, kod harus diubah suai seperti berikut. Dalam definisi kelas (fail.hpp), pengisytiharan dan permulaan tatasusunan statik harus kekal di dalam kelas. Dalam fail pelaksanaan (fail .cpp), baris yang berasingan harus ditambah untuk memberikan definisi tatasusunan statik.
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // now compiles successfully } constexpr char foo::baz[]; // definition of static member
Dengan memberikan definisi ahli statik secara berasingan, pengkompil boleh memautkan rujukan kepada tatasusunan dengan betul, menyelesaikan ralat rujukan yang tidak ditentukan. Pemisahan antara pengisytiharan dan takrifan ini adalah perlu kerana saiz tatasusunan mesti diketahui semasa penyusunan, manakala permulaannya boleh ditangguhkan sehingga kemudian.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Rujukan Tidak Ditakrifkan' dengan Tatasusunan Char constexpr Statik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!