Maison > Article > développement back-end > Comment puis-je surcharger le `operator[]` avec plusieurs arguments en C ?
Opérateur[] avec plusieurs arguments en C
Vous pouvez rencontrer des difficultés lorsque vous tentez de définir un opérateur de tableau en C qui prend plusieurs arguments. En utilisant la syntaxe suivante :
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]; }
Vous recevrez un message d'erreur :
error C2804: binary operator '[' has too many parameters
Solution de contournement (Pre-C 23)
Avant en C 23, la surcharge de l'opérateur[] avec plusieurs arguments n'était pas possible. Au lieu de cela, vous pouvez surcharger Operator().
Résolution (C 23)
Cependant, à partir de C 23, vous pouvez surcharger directement Operator[]. Ceci est démontré dans l'exemple cppreference ci-dessous :
struct V3 { double x, y, z; constexpr V3 operator[](int i) const { return { x, y, z }[i]; } // Alternatively, using std::initializer_list: friend constexpr std::initializer_list<double> operator()(const V3& v) { return { v.x, v.y, v.z }; } };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!