Opérateur de tableau multi-arguments en C ?
En C, les opérateurs peuvent être surchargés pour fournir un comportement personnalisé aux opérateurs intégrés tels que []. Cependant, avant C 23, la surcharge de [] pour accepter plusieurs arguments n'était pas possible.
Support limité avant C 23
Tentatives de définition d'un multi-argument [] L'opérateur entraînerait une erreur du compilateur, comme le montre l'exemple de code :
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]; }
Ce code déclenchera l'erreur :
error C2804 binary operator '[' has too many parameters
Solution de contournement avant C 23
En guise de solution de contournement, on pourrait surcharger l'opérateur () à la place :
T& operator()(const int i, const int j, const int k) { return m_cells[k*m_resSqr+j*m_res+i]; }
Support en C 23
À partir de C 23, le langage inclut la prise en charge des opérateurs multi-arguments []. En conséquence, le code présenté précédemment serait valide et permettrait de transmettre plusieurs arguments d'indice directement à l'opérateur [].
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!