Surcharge de l'opérateur de tableau en C avec plusieurs arguments
En C, les tableaux sont accessibles à l'aide de l'opérateur de tableau [], qui prend généralement un index unique comme argument. Cependant, certains scénarios peuvent nécessiter l'accès à un tableau à l'aide de plusieurs index. Est-il possible de surcharger l'opérateur tableau pour prendre plusieurs arguments ?
L'extrait de code fourni tente de surcharger l'opérateur tableau pour accepter trois arguments, mais il échoue avec l'erreur "l'opérateur binaire '[' a trop de paramètres ."
Avant C 23
Avant C 23, il n'était pas possible de surcharger l'opérateur tableau pour accepter plusieurs arguments. Une solution de contournement consistait à surcharger l'opérateur() à la place. En créant une fonction avec le prototype approprié, on pourrait simuler le comportement d'un opérateur de tableau avec plusieurs arguments.
C 23 et au-delà
Avec l'avènement du C 23 , plusieurs arguments d'indice peuvent être transmis directement à l'opérateur de tableau. Cette fonctionnalité simplifie le code et améliore la lisibilité, en particulier lorsque vous travaillez avec des tableaux multidimensionnels.
Par exemple, considérons l'extrait de code suivant :
struct MultiDimArray { std::vector<int> m_cells; int m_res; int m_resSqr; 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]; } };
Dans ce code, l'opérateur de tableau est surchargé prendre trois arguments. Cela permet au programmeur d'accéder au tableau en utilisant plusieurs index sans avoir besoin de fonctions ou de solutions de contournement supplémentaires.
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!