Maison >développement back-end >C++ >L'opérateur [] peut-il être surchargé deux fois pour un accès aux tableaux bidimensionnels ?
Opérateur[][] Surcharge pour les tableaux bidimensionnels
La question se pose : l'opérateur [] peut-il être surchargé deux fois pour activer la notation comme function3 pour un tableau à deux dimensions ?
Réponse : Oui, c'est le cas Possible
Pour y parvenir, on peut surcharger l'opérateur[] pour renvoyer un objet qui propose un autre opérateur [] pour accéder à l'élément souhaité. Voici un exemple de code :
class ArrayOfArrays { public: ArrayOfArrays() { _arrayofarrays = new int*[10]; for(int i = 0; i < 10; ++i) _arrayofarrays[i] = new int[10]; } class Proxy { public: Proxy(int* _array) : _array(_array) { } int operator[](int index) { return _array[index]; } private: int* _array; }; Proxy operator[](int index) { return Proxy(_arrayofarrays[index]); } private: int** _arrayofarrays; };
Cela permet une utilisation comme :
ArrayOfArrays aoa; aoa[3][5];
Notez que ce qui précède est un exemple simplifié ; Une vérification des limites supplémentaires et d'autres fonctionnalités seraient généralement mises en œuvre.
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!