Pengendali Tatasusunan Berbilang Argumen dalam C ?
Dalam C , pengendali boleh dibebankan untuk menyediakan tingkah laku tersuai untuk pengendali terbina dalam seperti []. Walau bagaimanapun, sebelum C 23, melebihkan [] untuk menerima berbilang hujah adalah tidak mungkin.
Sokongan Terhad Sebelum C 23
Percubaan untuk mentakrifkan berbilang hujah [] operator akan mengakibatkan ralat pengkompil, seperti yang dilihat dalam kod contoh:
const T& operator[](const int i, const int j, const int k) const { return m_cells[k*m_resSqr+j*m_res+i]; } T& operator[](const int i, const int j, const int k) { return m_cells[k*m_resSqr+j*m_res+i]; }
Kod ini akan mencetuskan ralat:
error C2804 binary operator '[' has too many parameters
Penyelesaian Sebelum C 23
Sebagai penyelesaian, seseorang boleh membebankan operator () sebaliknya:
T& operator()(const int i, const int j, const int k) { return m_cells[k*m_resSqr+j*m_res+i]; }
Sokongan dalam C 23
Dari C 23, bahasa itu termasuk sokongan untuk operator berbilang hujah []. Akibatnya, kod yang ditunjukkan sebelum ini adalah sah dan akan membenarkan berbilang argumen subskrip dihantar terus kepada pengendali [].
Atas ialah kandungan terperinci Bagaimanakah C Mengendalikan Operator Tatasusunan Berbilang Argumen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!